an exploratory study of the impact of antipatterns on class change

33
Empir Software Eng DOI 10.1007/s10664-011-9171-y An exploratory study of the impact of antipatterns on class change- and fault-proneness Foutse Khomh · Massimiliano Di Penta · Yann-Gaël Guéhéneuc · Giuliano Antoniol © Springer Science+Business Media, LLC 2011 Editor: Jim Whitehead Abstract Antipatterns are poor design choices that are conjectured to make object- oriented systems harder to maintain. We investigate the impact of antipatterns on classes in object-oriented systems by studying the relation between the presence of antipatterns and the change- and fault-proneness of the classes. We detect 13 antipatterns in 54 releases of ArgoUML, Eclipse, Mylyn, and Rhino, and analyse (1) to what extent classes participating in antipatterns have higher odds to change or to be subject to fault-fixing than other classes, (2) to what extent these odds (if higher) are due to the sizes of the classes or to the presence of antipatterns, and (3) what kinds of changes affect classes participating in antipatterns. We show that, in almost all releases of the four systems, classes participating in antipatterns are more change- and fault-prone than others. We also show that size alone cannot explain the higher odds of classes with antipatterns to underwent a (fault-fixing) change than other We thank Marc Eaddy for making his data on faults freely available. This work has been partly funded by the NSERC Research Chairs in Software Change and Evolution and in Software Patterns and Patterns of Software. F. Khomh (B ) Department of Electrical and Computer Engineering, Queen’s University, Kingston, ON, Canada e-mail: [email protected] M. D. Penta Department of Engineering, University of Sannio, Benevento, Italy e-mail: [email protected] Y.-G. Guéhéneuc · G. Antoniol SOCCER Lab. and Ptidej Team, Départment de Génie Informatique et Génie Logiciel, École Polytechnique de Montréal, Montréal, QC, Canada Y.-G. Guéhéneuc e-mail: [email protected] G. Antoniol e-mail: [email protected]

Upload: phungliem

Post on 16-Dec-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An exploratory study of the impact of antipatterns on class change

Empir Software EngDOI 101007s10664-011-9171-y

An exploratory study of the impact of antipatternson class change- and fault-proneness

Foutse Khomh middot Massimiliano Di Penta middotYann-Gaeumll Gueacuteheacuteneuc middot Giuliano Antoniol

copy Springer Science+Business Media LLC 2011Editor Jim Whitehead

Abstract Antipatterns are poor design choices that are conjectured to make object-oriented systems harder to maintain We investigate the impact of antipatterns onclasses in object-oriented systems by studying the relation between the presenceof antipatterns and the change- and fault-proneness of the classes We detect 13antipatterns in 54 releases of ArgoUML Eclipse Mylyn and Rhino and analyse (1)to what extent classes participating in antipatterns have higher odds to change or tobe subject to fault-fixing than other classes (2) to what extent these odds (if higher)are due to the sizes of the classes or to the presence of antipatterns and (3) whatkinds of changes affect classes participating in antipatterns We show that in almostall releases of the four systems classes participating in antipatterns are more change-and fault-prone than others We also show that size alone cannot explain the higherodds of classes with antipatterns to underwent a (fault-fixing) change than other

We thank Marc Eaddy for making his data on faults freely available This work has been partlyfunded by the NSERC Research Chairs in Software Change and Evolution and in SoftwarePatterns and Patterns of Software

F Khomh (B)Department of Electrical and Computer EngineeringQueenrsquos University Kingston ON Canadae-mail foutsekhomhqueensuca

M D PentaDepartment of Engineering University of Sannio Benevento Italye-mail dipentaunisannioit

Y-G Gueacuteheacuteneuc middot G AntoniolSOCCER Lab and Ptidej Team Deacutepartment de Geacutenie Informatique et Geacutenie LogicielEacutecole Polytechnique de Montreacuteal Montreacuteal QC Canada

Y-G Gueacuteheacuteneuce-mail yann-gaelgueheneucpolymtlca

G Antoniole-mail antoniolieeeorg

Empir Software Eng

classes Finally we show that structural changes affect more classes with antipatternsthan others We provide qualitative explanations of the increase of change- andfault-proneness in classes participating in antipatterns using release notes and bugreports The obtained results justify a posteriori previous work on the specificationand detection of antipatterns and could help to better focus quality assurance andtesting activities

Keywords Antipatterns middot Mining software repositories middotEmpirical software engineering

1 Context and Problem

Antipatternsmdashsuch as those presented in Brown et al (1998)mdashhave been proposedto embody poor design choices These antipatterns stem from experienced softwaredevelopersrsquo expertise and are conjectured in the literature to negatively impactsystems by making classes more change-prone andndashor fault-prone They are oppositeto design patterns (Gamma et al 1994) ie they identify ldquopoorrdquo solutions torecurring design problems for example Brownrsquos 40 antipatterns describe the mostcommon pitfalls in the software industry (Brown et al 1998) They are generallyintroduced by developers not having sufficient knowledge andor experience insolving a particular problem or having misapplied some design patterns Despite themany studies on antipatterns summarised in Section 6 only a few studies empiricallyanalysed the impact of antipatterns on source code-related phenomena (Bois et al2006 Khomh et al 2009b) in particular class change- and fault-proneness eventhough such phenomena directly impact the developersrsquo work

Examples of Antipatterns In practice antipatterns are in-between design and im-plementation they concern the design of one or more classes but they concretelymanifest themselves in the source code as classes through specific code smells(Fowler 1999) Often antipatterns are defined in terms of thresholds imposed onmetric values (Moha et al 2008a b) An example of antipattern is the LazyClasswhich occurs when a class does too little ie has few responsibilities in a systemA LazyClass is a class with few methods and fields its methods have little com-plexity It often stems from speculative generality during a system design andndashorimplementation

Another example of antipattern is the MessageChain which occurs when therealisation of a functionality of a class requires a long chain of method invocationsbetween objects of different classes A MessageChain is conjectured to impactchange- and fault-proneness because of the high number of indirections Classesusing message chains are detected by computing the number of transitive invocationsof a class to other classes

The two previous antipatterns are quite simple A more complex example ofantipattern is the Blob A Blob also called God Class is a large and complex classthat centralises the behaviour of a portion of a system and only uses other classesas data holders ie data classes A Blob prevents the use of polymorphism throughinheritance making changes more complex and risk-prone A class is a Blob if it hasa low cohesion it is large some of its method names recall procedural programming

Empir Software Eng

and it is associated to data classes which only provide fields andndashor accessors to theirfields

Goal and Process In this paper using data mined from version control systems westudy whether classes participating in an antipattern have an increased likelihoodto change than other classes between any two given releases Also by combiningdata from version control and issue-tracking systems we assess whether classesparticipating in antipatterns have a higher likelihood than others to be involvedin issues documenting faults we use a set of faults that in some cases have beenmanually validated by a third-party as explained in Section 2 We also study thepossible effect of class sizes on the results of our study by comparing the sizes ofclasses participating in antipatterns with those of other classes Finally we study thekinds of changes affecting classes participating in antipatterns

Study We perform the study on ten releases of ArgoUML 13 of Eclipse 18 ofMylyn and 13 of Rhino and across the changes and fault-fixing changes occurringbetween the releases We detect 13 antipatterns in the classes of these systems(see Section 22) to investigate their relations with change- and fault-pronenessWe show that antipatterns do have a negative impact on class change- and fault-proneness and that certain kinds of antipatterns do have a higher impact thanothers We also show that size alone cannot explain the higher change- and fault-proneness of classes participating in antipatterns We finally discuss the kinds ofchanges that affect classes participating or not in antipatterns ie additiondeletionof methodsattributes changes of method signatures and method implementation

Relevance Understanding if antipatterns increase the likelihood of classes to changeor to be subject to fault-fixing is important from both researchersrsquo and practitionersrsquopoints of view We show that the presence of antipatterns is related to an increaseof class change- and fault-proneness We also bring evidence that like designpatterns (Aversano et al 2007 Bieman et al 2003 Di Penta et al 2008 Vokaacutec2004) particular kinds of antipatterns are more correlated to change- and fault-proneness than others Therefore within the limits of its threats to validity this studyprovides quantitative evidence that antipatterns indeed may affect the developersrsquowork negatively and thus possibly software evolution Thus we justify a posterioriprevious work on antipatterns and prove to be true the conjecture from the literatureon the negative impact of antipatterns

We also provide evidence to practitionersmdashdevelopers quality assurance per-sonnel and managersmdashof the importance and usefulness of antipattern detectiontechniques to assess class change- and fault-proneness With the availability of suchinformation a tester could decide to focus on classes participating in antipatternsbecause she knows that such classes are likely to contain faults Similarly a managercould use such techniques to assess the volume of classes participating in antipatternsin a to-be-acquired system and thus adjust her offer and forecast the system cost-of-ownership andndashor plan for refactorings

Organisation Section 2 describes the empirical study definition and designSection 3 presents the study results Sections 4 and 5 discusses the results and thethreats to their validity Section 6 relates our study with previous work FinallySection 7 concludes the paper and outlines future work

Empir Software Eng

Table 1 Summary of the characteristics of the analysed systems

Systems Releases () Classes LOCs Changes Fault-fixingchanges

ArgoUML 0101ndash0262 (10) 792ndash1841 128585ndash316971 40409 2064Eclipse 10ndash331 (13) 4647ndash17167 781480ndash3756164 196193 24335Mylyn 101ndash311 (18) 1625ndash2762 207436ndash276401 36328 118Rhino 14R3ndash16R6 (13) 89ndash270 30748ndash79406 6925 1068

2 Study Definition and Design

The goal of our study is to investigate the relation between classes participating inantipatterns and their change- and fault-proneness as well as the kinds of changesimpacting antipatterns The quality focus is the source code change- and fault-proneness which if high can have a concrete effect on developersrsquo effort and onthe overall project development and maintenance cost and time

The perspective is that of researchers interested in the relation between antipat-terns and evolution phenomena in software systems Also results can be of interestto developers who perform development or maintenance activities and need to takeinto account and forecast their effort and to testers who need to know which classesare important to test Finally they can be of interest to managers andndashor qualityassurance personnel who could use antipattern detection techniques to assess thefuture changes and faults of in-house or to-be-acquired source code to better quantifyits cost-of-ownership

The context of this study consists in the change history and issue-tracking systemsof four Java systems1 ArgoUML is an open source UML-based system design toolEclipse is an open-source integrated development environment It is a platform usedboth in open-source communities and in industry Mylyn is a plug-in for Eclipsewhich aims at reducing information overload and making developersrsquo multi-taskingeasier Rhino is an open-source implementation of a JavaScript interpreter

The four systems have different sizes and belong to different domains Eclipseis a large system (release 331 is larger than 35 MLOCs) and therefore close tothe size of many real industrial systems It is also developed partly by a commercialcompany IBM and thus is likely to embody industrial practices ArgoUML Mylynand Rhino have wide ranges of sizes are open-source and also have differentarchitectures Specifically ArgoUML is a monolithic system Eclipse has a plugin-based architecture Mylyn is an Eclipse plugin and Rhino a component of a largersystem ie the MozillaFirefox Web browser Previous studiesmdashperformed also onArgoUML and Eclipsemdashsuggested that systems exhibiting different architecturesexhibited different change-proneness and underwent different kinds of changes(Aversano et al 2007 Di Penta et al 2008)

Table 1 summarises the main characteristics of the systems the first and lastanalysed releases the numbers of releases considered the system sizes ranges inLOCs and the overall numbers of considered changes and fault-fixing changes(Detailed figures are available in a technical report (Khomh et al 2009a) fault

1httpargoumltigrisorg httpwwweclipseorg httpwwweclipseorgmylyn and httpwwwmozillaorgrhino

Empir Software Eng

classification for Mylyn is only available for the first three releases (Eaddy et al2008))

We do not include release 21 of Eclipse in our study because we observed thatthe number of committed changes and fixed faults between release 21 and 211is about one order of magnitude smaller than those numbers between any othertwo subsequent releases Also the number of classes did not substantially changebetween 20 21 and 211 Finally the period of time between 21 and 211 is alsoshorter (three months) than those between other pairs of releases Thus we preferredto consider the period between releases 20 and 211 as one ldquoreleaserdquo for consistency

For the four systems it is relevant to study the relation between antipatternschange- and fault-proneness and class sizes because the percentages of classesparticipating in antipatterns are not negligible Figure 1 shows that these percentagesvary across releases in the four systems and that it is always higher than 45 withpeaks as high as 80 We further report that classes participating in antipatternsparticipate in average to two antipatterns in ArgoUML three in Eclipse two inMylyn and two in Rhino and to in maximum between seven and nine antipatternsin ArgoUML 13 and 24 antipatterns in Eclipse six and seven antipatterns in Mylynand five and seven antipatterns in Rhino (Detailed data is available elsewhere(Khomh et al 2009a))

Table 2 shows the distribution of the antipatterns of interest detailed inSection 22 A cell in the table reports on the left side of the dash (respectively onits right) the number of classes in the first release of a given system (respectivelyits last) which participates in a given antipattern followed by their percentages withrespect to the total numbers of classes For example the cell at the intersection ofthe ArgoUML column and the AntiSingleton row reports that in its first release352 classes were AntiSingleton representing 4444 of the total number of itsclasses while in the last release only three classes were AntiSingleton representing

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Releases

o

f cl

asse

s p

arti

cip

atin

g in

anti

pat

tern

s

ArgoUML Eclipse Mylyn Rhino

Fig 1 Percentages of classes participating in antipatterns in the releases of the four systems

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 2: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

classes Finally we show that structural changes affect more classes with antipatternsthan others We provide qualitative explanations of the increase of change- andfault-proneness in classes participating in antipatterns using release notes and bugreports The obtained results justify a posteriori previous work on the specificationand detection of antipatterns and could help to better focus quality assurance andtesting activities

Keywords Antipatterns middot Mining software repositories middotEmpirical software engineering

1 Context and Problem

Antipatternsmdashsuch as those presented in Brown et al (1998)mdashhave been proposedto embody poor design choices These antipatterns stem from experienced softwaredevelopersrsquo expertise and are conjectured in the literature to negatively impactsystems by making classes more change-prone andndashor fault-prone They are oppositeto design patterns (Gamma et al 1994) ie they identify ldquopoorrdquo solutions torecurring design problems for example Brownrsquos 40 antipatterns describe the mostcommon pitfalls in the software industry (Brown et al 1998) They are generallyintroduced by developers not having sufficient knowledge andor experience insolving a particular problem or having misapplied some design patterns Despite themany studies on antipatterns summarised in Section 6 only a few studies empiricallyanalysed the impact of antipatterns on source code-related phenomena (Bois et al2006 Khomh et al 2009b) in particular class change- and fault-proneness eventhough such phenomena directly impact the developersrsquo work

Examples of Antipatterns In practice antipatterns are in-between design and im-plementation they concern the design of one or more classes but they concretelymanifest themselves in the source code as classes through specific code smells(Fowler 1999) Often antipatterns are defined in terms of thresholds imposed onmetric values (Moha et al 2008a b) An example of antipattern is the LazyClasswhich occurs when a class does too little ie has few responsibilities in a systemA LazyClass is a class with few methods and fields its methods have little com-plexity It often stems from speculative generality during a system design andndashorimplementation

Another example of antipattern is the MessageChain which occurs when therealisation of a functionality of a class requires a long chain of method invocationsbetween objects of different classes A MessageChain is conjectured to impactchange- and fault-proneness because of the high number of indirections Classesusing message chains are detected by computing the number of transitive invocationsof a class to other classes

The two previous antipatterns are quite simple A more complex example ofantipattern is the Blob A Blob also called God Class is a large and complex classthat centralises the behaviour of a portion of a system and only uses other classesas data holders ie data classes A Blob prevents the use of polymorphism throughinheritance making changes more complex and risk-prone A class is a Blob if it hasa low cohesion it is large some of its method names recall procedural programming

Empir Software Eng

and it is associated to data classes which only provide fields andndashor accessors to theirfields

Goal and Process In this paper using data mined from version control systems westudy whether classes participating in an antipattern have an increased likelihoodto change than other classes between any two given releases Also by combiningdata from version control and issue-tracking systems we assess whether classesparticipating in antipatterns have a higher likelihood than others to be involvedin issues documenting faults we use a set of faults that in some cases have beenmanually validated by a third-party as explained in Section 2 We also study thepossible effect of class sizes on the results of our study by comparing the sizes ofclasses participating in antipatterns with those of other classes Finally we study thekinds of changes affecting classes participating in antipatterns

Study We perform the study on ten releases of ArgoUML 13 of Eclipse 18 ofMylyn and 13 of Rhino and across the changes and fault-fixing changes occurringbetween the releases We detect 13 antipatterns in the classes of these systems(see Section 22) to investigate their relations with change- and fault-pronenessWe show that antipatterns do have a negative impact on class change- and fault-proneness and that certain kinds of antipatterns do have a higher impact thanothers We also show that size alone cannot explain the higher change- and fault-proneness of classes participating in antipatterns We finally discuss the kinds ofchanges that affect classes participating or not in antipatterns ie additiondeletionof methodsattributes changes of method signatures and method implementation

Relevance Understanding if antipatterns increase the likelihood of classes to changeor to be subject to fault-fixing is important from both researchersrsquo and practitionersrsquopoints of view We show that the presence of antipatterns is related to an increaseof class change- and fault-proneness We also bring evidence that like designpatterns (Aversano et al 2007 Bieman et al 2003 Di Penta et al 2008 Vokaacutec2004) particular kinds of antipatterns are more correlated to change- and fault-proneness than others Therefore within the limits of its threats to validity this studyprovides quantitative evidence that antipatterns indeed may affect the developersrsquowork negatively and thus possibly software evolution Thus we justify a posterioriprevious work on antipatterns and prove to be true the conjecture from the literatureon the negative impact of antipatterns

We also provide evidence to practitionersmdashdevelopers quality assurance per-sonnel and managersmdashof the importance and usefulness of antipattern detectiontechniques to assess class change- and fault-proneness With the availability of suchinformation a tester could decide to focus on classes participating in antipatternsbecause she knows that such classes are likely to contain faults Similarly a managercould use such techniques to assess the volume of classes participating in antipatternsin a to-be-acquired system and thus adjust her offer and forecast the system cost-of-ownership andndashor plan for refactorings

Organisation Section 2 describes the empirical study definition and designSection 3 presents the study results Sections 4 and 5 discusses the results and thethreats to their validity Section 6 relates our study with previous work FinallySection 7 concludes the paper and outlines future work

Empir Software Eng

Table 1 Summary of the characteristics of the analysed systems

Systems Releases () Classes LOCs Changes Fault-fixingchanges

ArgoUML 0101ndash0262 (10) 792ndash1841 128585ndash316971 40409 2064Eclipse 10ndash331 (13) 4647ndash17167 781480ndash3756164 196193 24335Mylyn 101ndash311 (18) 1625ndash2762 207436ndash276401 36328 118Rhino 14R3ndash16R6 (13) 89ndash270 30748ndash79406 6925 1068

2 Study Definition and Design

The goal of our study is to investigate the relation between classes participating inantipatterns and their change- and fault-proneness as well as the kinds of changesimpacting antipatterns The quality focus is the source code change- and fault-proneness which if high can have a concrete effect on developersrsquo effort and onthe overall project development and maintenance cost and time

The perspective is that of researchers interested in the relation between antipat-terns and evolution phenomena in software systems Also results can be of interestto developers who perform development or maintenance activities and need to takeinto account and forecast their effort and to testers who need to know which classesare important to test Finally they can be of interest to managers andndashor qualityassurance personnel who could use antipattern detection techniques to assess thefuture changes and faults of in-house or to-be-acquired source code to better quantifyits cost-of-ownership

The context of this study consists in the change history and issue-tracking systemsof four Java systems1 ArgoUML is an open source UML-based system design toolEclipse is an open-source integrated development environment It is a platform usedboth in open-source communities and in industry Mylyn is a plug-in for Eclipsewhich aims at reducing information overload and making developersrsquo multi-taskingeasier Rhino is an open-source implementation of a JavaScript interpreter

The four systems have different sizes and belong to different domains Eclipseis a large system (release 331 is larger than 35 MLOCs) and therefore close tothe size of many real industrial systems It is also developed partly by a commercialcompany IBM and thus is likely to embody industrial practices ArgoUML Mylynand Rhino have wide ranges of sizes are open-source and also have differentarchitectures Specifically ArgoUML is a monolithic system Eclipse has a plugin-based architecture Mylyn is an Eclipse plugin and Rhino a component of a largersystem ie the MozillaFirefox Web browser Previous studiesmdashperformed also onArgoUML and Eclipsemdashsuggested that systems exhibiting different architecturesexhibited different change-proneness and underwent different kinds of changes(Aversano et al 2007 Di Penta et al 2008)

Table 1 summarises the main characteristics of the systems the first and lastanalysed releases the numbers of releases considered the system sizes ranges inLOCs and the overall numbers of considered changes and fault-fixing changes(Detailed figures are available in a technical report (Khomh et al 2009a) fault

1httpargoumltigrisorg httpwwweclipseorg httpwwweclipseorgmylyn and httpwwwmozillaorgrhino

Empir Software Eng

classification for Mylyn is only available for the first three releases (Eaddy et al2008))

We do not include release 21 of Eclipse in our study because we observed thatthe number of committed changes and fixed faults between release 21 and 211is about one order of magnitude smaller than those numbers between any othertwo subsequent releases Also the number of classes did not substantially changebetween 20 21 and 211 Finally the period of time between 21 and 211 is alsoshorter (three months) than those between other pairs of releases Thus we preferredto consider the period between releases 20 and 211 as one ldquoreleaserdquo for consistency

For the four systems it is relevant to study the relation between antipatternschange- and fault-proneness and class sizes because the percentages of classesparticipating in antipatterns are not negligible Figure 1 shows that these percentagesvary across releases in the four systems and that it is always higher than 45 withpeaks as high as 80 We further report that classes participating in antipatternsparticipate in average to two antipatterns in ArgoUML three in Eclipse two inMylyn and two in Rhino and to in maximum between seven and nine antipatternsin ArgoUML 13 and 24 antipatterns in Eclipse six and seven antipatterns in Mylynand five and seven antipatterns in Rhino (Detailed data is available elsewhere(Khomh et al 2009a))

Table 2 shows the distribution of the antipatterns of interest detailed inSection 22 A cell in the table reports on the left side of the dash (respectively onits right) the number of classes in the first release of a given system (respectivelyits last) which participates in a given antipattern followed by their percentages withrespect to the total numbers of classes For example the cell at the intersection ofthe ArgoUML column and the AntiSingleton row reports that in its first release352 classes were AntiSingleton representing 4444 of the total number of itsclasses while in the last release only three classes were AntiSingleton representing

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Releases

o

f cl

asse

s p

arti

cip

atin

g in

anti

pat

tern

s

ArgoUML Eclipse Mylyn Rhino

Fig 1 Percentages of classes participating in antipatterns in the releases of the four systems

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 3: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

and it is associated to data classes which only provide fields andndashor accessors to theirfields

Goal and Process In this paper using data mined from version control systems westudy whether classes participating in an antipattern have an increased likelihoodto change than other classes between any two given releases Also by combiningdata from version control and issue-tracking systems we assess whether classesparticipating in antipatterns have a higher likelihood than others to be involvedin issues documenting faults we use a set of faults that in some cases have beenmanually validated by a third-party as explained in Section 2 We also study thepossible effect of class sizes on the results of our study by comparing the sizes ofclasses participating in antipatterns with those of other classes Finally we study thekinds of changes affecting classes participating in antipatterns

Study We perform the study on ten releases of ArgoUML 13 of Eclipse 18 ofMylyn and 13 of Rhino and across the changes and fault-fixing changes occurringbetween the releases We detect 13 antipatterns in the classes of these systems(see Section 22) to investigate their relations with change- and fault-pronenessWe show that antipatterns do have a negative impact on class change- and fault-proneness and that certain kinds of antipatterns do have a higher impact thanothers We also show that size alone cannot explain the higher change- and fault-proneness of classes participating in antipatterns We finally discuss the kinds ofchanges that affect classes participating or not in antipatterns ie additiondeletionof methodsattributes changes of method signatures and method implementation

Relevance Understanding if antipatterns increase the likelihood of classes to changeor to be subject to fault-fixing is important from both researchersrsquo and practitionersrsquopoints of view We show that the presence of antipatterns is related to an increaseof class change- and fault-proneness We also bring evidence that like designpatterns (Aversano et al 2007 Bieman et al 2003 Di Penta et al 2008 Vokaacutec2004) particular kinds of antipatterns are more correlated to change- and fault-proneness than others Therefore within the limits of its threats to validity this studyprovides quantitative evidence that antipatterns indeed may affect the developersrsquowork negatively and thus possibly software evolution Thus we justify a posterioriprevious work on antipatterns and prove to be true the conjecture from the literatureon the negative impact of antipatterns

We also provide evidence to practitionersmdashdevelopers quality assurance per-sonnel and managersmdashof the importance and usefulness of antipattern detectiontechniques to assess class change- and fault-proneness With the availability of suchinformation a tester could decide to focus on classes participating in antipatternsbecause she knows that such classes are likely to contain faults Similarly a managercould use such techniques to assess the volume of classes participating in antipatternsin a to-be-acquired system and thus adjust her offer and forecast the system cost-of-ownership andndashor plan for refactorings

Organisation Section 2 describes the empirical study definition and designSection 3 presents the study results Sections 4 and 5 discusses the results and thethreats to their validity Section 6 relates our study with previous work FinallySection 7 concludes the paper and outlines future work

Empir Software Eng

Table 1 Summary of the characteristics of the analysed systems

Systems Releases () Classes LOCs Changes Fault-fixingchanges

ArgoUML 0101ndash0262 (10) 792ndash1841 128585ndash316971 40409 2064Eclipse 10ndash331 (13) 4647ndash17167 781480ndash3756164 196193 24335Mylyn 101ndash311 (18) 1625ndash2762 207436ndash276401 36328 118Rhino 14R3ndash16R6 (13) 89ndash270 30748ndash79406 6925 1068

2 Study Definition and Design

The goal of our study is to investigate the relation between classes participating inantipatterns and their change- and fault-proneness as well as the kinds of changesimpacting antipatterns The quality focus is the source code change- and fault-proneness which if high can have a concrete effect on developersrsquo effort and onthe overall project development and maintenance cost and time

The perspective is that of researchers interested in the relation between antipat-terns and evolution phenomena in software systems Also results can be of interestto developers who perform development or maintenance activities and need to takeinto account and forecast their effort and to testers who need to know which classesare important to test Finally they can be of interest to managers andndashor qualityassurance personnel who could use antipattern detection techniques to assess thefuture changes and faults of in-house or to-be-acquired source code to better quantifyits cost-of-ownership

The context of this study consists in the change history and issue-tracking systemsof four Java systems1 ArgoUML is an open source UML-based system design toolEclipse is an open-source integrated development environment It is a platform usedboth in open-source communities and in industry Mylyn is a plug-in for Eclipsewhich aims at reducing information overload and making developersrsquo multi-taskingeasier Rhino is an open-source implementation of a JavaScript interpreter

The four systems have different sizes and belong to different domains Eclipseis a large system (release 331 is larger than 35 MLOCs) and therefore close tothe size of many real industrial systems It is also developed partly by a commercialcompany IBM and thus is likely to embody industrial practices ArgoUML Mylynand Rhino have wide ranges of sizes are open-source and also have differentarchitectures Specifically ArgoUML is a monolithic system Eclipse has a plugin-based architecture Mylyn is an Eclipse plugin and Rhino a component of a largersystem ie the MozillaFirefox Web browser Previous studiesmdashperformed also onArgoUML and Eclipsemdashsuggested that systems exhibiting different architecturesexhibited different change-proneness and underwent different kinds of changes(Aversano et al 2007 Di Penta et al 2008)

Table 1 summarises the main characteristics of the systems the first and lastanalysed releases the numbers of releases considered the system sizes ranges inLOCs and the overall numbers of considered changes and fault-fixing changes(Detailed figures are available in a technical report (Khomh et al 2009a) fault

1httpargoumltigrisorg httpwwweclipseorg httpwwweclipseorgmylyn and httpwwwmozillaorgrhino

Empir Software Eng

classification for Mylyn is only available for the first three releases (Eaddy et al2008))

We do not include release 21 of Eclipse in our study because we observed thatthe number of committed changes and fixed faults between release 21 and 211is about one order of magnitude smaller than those numbers between any othertwo subsequent releases Also the number of classes did not substantially changebetween 20 21 and 211 Finally the period of time between 21 and 211 is alsoshorter (three months) than those between other pairs of releases Thus we preferredto consider the period between releases 20 and 211 as one ldquoreleaserdquo for consistency

For the four systems it is relevant to study the relation between antipatternschange- and fault-proneness and class sizes because the percentages of classesparticipating in antipatterns are not negligible Figure 1 shows that these percentagesvary across releases in the four systems and that it is always higher than 45 withpeaks as high as 80 We further report that classes participating in antipatternsparticipate in average to two antipatterns in ArgoUML three in Eclipse two inMylyn and two in Rhino and to in maximum between seven and nine antipatternsin ArgoUML 13 and 24 antipatterns in Eclipse six and seven antipatterns in Mylynand five and seven antipatterns in Rhino (Detailed data is available elsewhere(Khomh et al 2009a))

Table 2 shows the distribution of the antipatterns of interest detailed inSection 22 A cell in the table reports on the left side of the dash (respectively onits right) the number of classes in the first release of a given system (respectivelyits last) which participates in a given antipattern followed by their percentages withrespect to the total numbers of classes For example the cell at the intersection ofthe ArgoUML column and the AntiSingleton row reports that in its first release352 classes were AntiSingleton representing 4444 of the total number of itsclasses while in the last release only three classes were AntiSingleton representing

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Releases

o

f cl

asse

s p

arti

cip

atin

g in

anti

pat

tern

s

ArgoUML Eclipse Mylyn Rhino

Fig 1 Percentages of classes participating in antipatterns in the releases of the four systems

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 4: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Table 1 Summary of the characteristics of the analysed systems

Systems Releases () Classes LOCs Changes Fault-fixingchanges

ArgoUML 0101ndash0262 (10) 792ndash1841 128585ndash316971 40409 2064Eclipse 10ndash331 (13) 4647ndash17167 781480ndash3756164 196193 24335Mylyn 101ndash311 (18) 1625ndash2762 207436ndash276401 36328 118Rhino 14R3ndash16R6 (13) 89ndash270 30748ndash79406 6925 1068

2 Study Definition and Design

The goal of our study is to investigate the relation between classes participating inantipatterns and their change- and fault-proneness as well as the kinds of changesimpacting antipatterns The quality focus is the source code change- and fault-proneness which if high can have a concrete effect on developersrsquo effort and onthe overall project development and maintenance cost and time

The perspective is that of researchers interested in the relation between antipat-terns and evolution phenomena in software systems Also results can be of interestto developers who perform development or maintenance activities and need to takeinto account and forecast their effort and to testers who need to know which classesare important to test Finally they can be of interest to managers andndashor qualityassurance personnel who could use antipattern detection techniques to assess thefuture changes and faults of in-house or to-be-acquired source code to better quantifyits cost-of-ownership

The context of this study consists in the change history and issue-tracking systemsof four Java systems1 ArgoUML is an open source UML-based system design toolEclipse is an open-source integrated development environment It is a platform usedboth in open-source communities and in industry Mylyn is a plug-in for Eclipsewhich aims at reducing information overload and making developersrsquo multi-taskingeasier Rhino is an open-source implementation of a JavaScript interpreter

The four systems have different sizes and belong to different domains Eclipseis a large system (release 331 is larger than 35 MLOCs) and therefore close tothe size of many real industrial systems It is also developed partly by a commercialcompany IBM and thus is likely to embody industrial practices ArgoUML Mylynand Rhino have wide ranges of sizes are open-source and also have differentarchitectures Specifically ArgoUML is a monolithic system Eclipse has a plugin-based architecture Mylyn is an Eclipse plugin and Rhino a component of a largersystem ie the MozillaFirefox Web browser Previous studiesmdashperformed also onArgoUML and Eclipsemdashsuggested that systems exhibiting different architecturesexhibited different change-proneness and underwent different kinds of changes(Aversano et al 2007 Di Penta et al 2008)

Table 1 summarises the main characteristics of the systems the first and lastanalysed releases the numbers of releases considered the system sizes ranges inLOCs and the overall numbers of considered changes and fault-fixing changes(Detailed figures are available in a technical report (Khomh et al 2009a) fault

1httpargoumltigrisorg httpwwweclipseorg httpwwweclipseorgmylyn and httpwwwmozillaorgrhino

Empir Software Eng

classification for Mylyn is only available for the first three releases (Eaddy et al2008))

We do not include release 21 of Eclipse in our study because we observed thatthe number of committed changes and fixed faults between release 21 and 211is about one order of magnitude smaller than those numbers between any othertwo subsequent releases Also the number of classes did not substantially changebetween 20 21 and 211 Finally the period of time between 21 and 211 is alsoshorter (three months) than those between other pairs of releases Thus we preferredto consider the period between releases 20 and 211 as one ldquoreleaserdquo for consistency

For the four systems it is relevant to study the relation between antipatternschange- and fault-proneness and class sizes because the percentages of classesparticipating in antipatterns are not negligible Figure 1 shows that these percentagesvary across releases in the four systems and that it is always higher than 45 withpeaks as high as 80 We further report that classes participating in antipatternsparticipate in average to two antipatterns in ArgoUML three in Eclipse two inMylyn and two in Rhino and to in maximum between seven and nine antipatternsin ArgoUML 13 and 24 antipatterns in Eclipse six and seven antipatterns in Mylynand five and seven antipatterns in Rhino (Detailed data is available elsewhere(Khomh et al 2009a))

Table 2 shows the distribution of the antipatterns of interest detailed inSection 22 A cell in the table reports on the left side of the dash (respectively onits right) the number of classes in the first release of a given system (respectivelyits last) which participates in a given antipattern followed by their percentages withrespect to the total numbers of classes For example the cell at the intersection ofthe ArgoUML column and the AntiSingleton row reports that in its first release352 classes were AntiSingleton representing 4444 of the total number of itsclasses while in the last release only three classes were AntiSingleton representing

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Releases

o

f cl

asse

s p

arti

cip

atin

g in

anti

pat

tern

s

ArgoUML Eclipse Mylyn Rhino

Fig 1 Percentages of classes participating in antipatterns in the releases of the four systems

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 5: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

classification for Mylyn is only available for the first three releases (Eaddy et al2008))

We do not include release 21 of Eclipse in our study because we observed thatthe number of committed changes and fixed faults between release 21 and 211is about one order of magnitude smaller than those numbers between any othertwo subsequent releases Also the number of classes did not substantially changebetween 20 21 and 211 Finally the period of time between 21 and 211 is alsoshorter (three months) than those between other pairs of releases Thus we preferredto consider the period between releases 20 and 211 as one ldquoreleaserdquo for consistency

For the four systems it is relevant to study the relation between antipatternschange- and fault-proneness and class sizes because the percentages of classesparticipating in antipatterns are not negligible Figure 1 shows that these percentagesvary across releases in the four systems and that it is always higher than 45 withpeaks as high as 80 We further report that classes participating in antipatternsparticipate in average to two antipatterns in ArgoUML three in Eclipse two inMylyn and two in Rhino and to in maximum between seven and nine antipatternsin ArgoUML 13 and 24 antipatterns in Eclipse six and seven antipatterns in Mylynand five and seven antipatterns in Rhino (Detailed data is available elsewhere(Khomh et al 2009a))

Table 2 shows the distribution of the antipatterns of interest detailed inSection 22 A cell in the table reports on the left side of the dash (respectively onits right) the number of classes in the first release of a given system (respectivelyits last) which participates in a given antipattern followed by their percentages withrespect to the total numbers of classes For example the cell at the intersection ofthe ArgoUML column and the AntiSingleton row reports that in its first release352 classes were AntiSingleton representing 4444 of the total number of itsclasses while in the last release only three classes were AntiSingleton representing

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Releases

o

f cl

asse

s p

arti

cip

atin

g in

anti

pat

tern

s

ArgoUML Eclipse Mylyn Rhino

Fig 1 Percentages of classes participating in antipatterns in the releases of the four systems

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 6: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Tab

le2

Dis

trib

utio

nof

anti

patt

erns

inth

ean

alys

edre

leas

es

Ant

ipat

tern

sN

umbe

rof

anti

patt

erns

infi

rsta

ndla

stre

leas

es(i

npa

rent

hese

sth

epe

rcen

tage

sof

part

icip

atin

gcl

asse

s)

Arg

oUM

LE

clip

seM

ylyn

Rhi

no

Ant

iSin

glet

on35

2(4

444

)ndash3

(01

6)33

0(7

10)

ndash17

84(1

039

)4

(02

5)ndash1

27(4

60)

16(1

798

)ndash1

(03

7)B

lob

26(3

28)

ndash116

(63

0)60

0(1

291

)ndash2

194

(12

78)

40(2

46)

ndash93

(33

7)0

(0)ndash

0(0

)C

DSB

P13

6(1

717

)ndash51

(27

7)38

2(8

22)

ndash22

85(1

331

)61

(37

5)ndash1

83(6

63)

4(4

49)

ndash17

(63

0)C

ompl

exC

lass

42(5

30)

ndash103

(55

9)51

1(1

100

)ndash2

125

(12

38)

29(1

78)

ndash72

(26

1)6

(67

4)ndash1

4(5

56)

Lar

geC

lass

56(7

07)

ndash166

(90

2)1

(00

2)ndash8

(00

5)43

(26

5)ndash9

9(3

58)

9(1

011

)ndash19

(70

4)L

azyC

lass

16(2

02)

ndash44

(23

9)2

403

(51

71)ndash

856

1(4

987

)2

(01

2)ndash1

8(0

65)

4(4

49)

ndash9(3

33)

Lon

gMet

hod

172

(21

72)ndash

348

(18

90)

237

2(5

104

)ndash7

956

(46

34)

134

(82

5)ndash3

49(1

264

)14

(15

73)ndash

35(1

296

)L

PL

195

(24

62)ndash

300

(16

30)

108

7(2

339

)ndash3

233

(18

83)

43(2

65)

ndash95

(34

4)9

(10

11)ndash

8(2

96)

Mes

sage

Cha

in79

(99

7)ndash1

66(9

02)

104

3(2

244

)ndash3

041

(17

71)

70(4

31)

ndash181

(65

5)20

(22

47)ndash

66(2

444

)R

PB

105

(13

26)ndash

574

(31

18)

397

(85

4)ndash2

582

(15

04)

45(2

77)

ndash290

(10

50)

5(5

62)

ndash11

(40

7)Sp

aghe

ttiC

ode

9(1

14)

ndash22

(12

0)2

(00

4)ndash1

(00

1)12

(07

4)ndash3

9(1

41)

0(0

00)

ndash2(0

74)

SG0

(00

0)ndash0

(00

0)54

(11

6)ndash2

28(1

33)

0(0

00)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Swis

sArm

yKni

fe0

(00

0)ndash0

(00

0)67

(14

4)ndash9

6(0

56)

1(0

06)

ndash0(0

00)

0(0

00)

ndash0(0

00)

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 7: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

016 of the total number of its classes Percentages go as high as 5171 of classesparticipating in LazyClass in the first release of Eclipse

21 Research Questions

Our study aims at addressing six null hypotheses specifically concerning the relationsbetween classes participating in antipatterns and their change-proneness (RQ1 andRQ2) fault-proneness (RQ3 and RQ4) size (RQ5) and kinds of changes (RQ6)

RQ1 What is the relation between antipatterns and change-proneness We investi-gate whether classes participating in at least one antipattern are more change-pronethan others by testing the null hypothesis H01 the proportion of classes undergoingat least one change between two releases is not dif ferent between classes in antipatternsor not

RQ2 What is the relation between kinds of antipatterns and change-proneness Weanalyse whether certain antipatterns imply more changes than others by testing thenull hypothesis H02 classes participating in certain antipatterns are not more change-prone than others

RQ3 What is the relation between antipatterns and fault-proneness This researchquestion focuses on the relation between antipatterns and fault-fixing issues Thenull hypothesis is H03 the proportion of classes undergoing at least one fault-f ixingchange between two releases does not dif fer between classes participating or not in atleast one antipattern

RQ4 What is the relation between particular kinds of antipatterns and fault-proneness We also analyse the influence of kinds of antipatterns on fault-pronenessby testing the null hypothesis H04 classes participating in certain kinds of antipatternsare not more prone to fault-f ixing than other classes

RQ5 Does the presence of antipatterns in classes relate to the sizes of these classesThis research question stems from El Emam et al (2001) findings showing that manymetrics correlate to size Specifically we study whether the higher change- andndashorfault-proneness of classes participating in antipatterns is due to their sizes (in termsof LOCs) or to the presence of the antipatterns by testing the hypothesis H05 classesparticipating in antipatterns are not larger than other classes

RQ6 What kind of changes are performed on classes participating or not in an-tipatterns We study whether classes participating in antipatterns undergo more (orless) structural changes (additionremovalchange ofto attributes additionremovalof methods or changes to the methods signatures) than other kinds of changes bytesting the hypothesis H06 classes participating in antipatterns do not undergo anumber of structural changes dif ferent than other kinds of changes

Hypotheses H01 to H05 are one-tailed because we are interested in investigatingonly whether antipatterns relate to an increase of change-proneness fault-pronenessand size Hypothesis H06 is two-tailed because we investigate whether the presenceof antipatterns is related to a higher or a lower number of structural changes

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 8: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

22 Independent Variables

We use our previous approach DECOR (Defect dEtection for CORrection Mohaet al 2008a b 2010) to specify and detect antipatterns DECOR is based on athorough domain analysis of code smells and antipatterns in the literature fromwhich is built a domain-specific language This language uses rules to describesantipatterns with different types of properties lexical (eg class names) structural(eg classes declaring public static variables) internal (eg number of methods)and the relation among properties (eg association aggregation and compositionrelations among classes) Using this language DECOR proposes the descriptionsof several antipatterns It also provides algorithms and a framework DeTeX toconvert antipattern descriptions automatically into detection algorithms DeTeXallows detecting occurrences of antipatterns in systems written in various object-oriented programming languages such as Java

Moha et al (2010) showed that the current detection algorithms obtained fromDECOR ensure 100 recall and have precisions between 411 and 87 for threeantipatterns Blob SpaghettiCode and SwissArmyKnife (Moha et al 2010) Thedetection algorithms for these three antipatterns have an average accuracy of 99for the Blob of 89 for the SpaghettiCode and of 95 for the SwissArmyKnifeand a total average of 94 In the following we focus on 13 antipatterns from Brownet al (1998) and Fowler (1999)

ndash AntiSingleton A class that provides mutable class variables which consequentlycould be used as global variables

ndash Blob A class that is too large and not cohesive enough that monopolises mostof the processing takes most of the decisions and is associated to data classes

ndash ClassDataShouldBePrivate (CDSBP) A class that exposes its fields thus violat-ing the principle of encapsulation

ndash ComplexClass A class that has (at least) one large and complex method in termsof cyclomatic complexity and LOCs

ndash LargeClass A class that has (at least) one large method in term of LOCsndash LazyClass A class that has few fields and methods (with little complexity)ndash LongMethod A class that has a method that is overly long in term of LOCsndash LongParameterList (LPL) A class that has (at least) one method with a too long

list of parameters with respect to the average number of parameters per methodsin the system

ndash MessageChain A class that uses a long chain of method invocations to realise (atleast) one of its functionality

ndash RefusedParentBequest (RPB) A class that redefines inherited method usingempty bodies thus breaking polymorphism

ndash SpaghettiCode A class declaring long methods with no parameters and usingglobal variables These methods interact too much using complex decisionalgorithms This class does not exploit and prevents the use of polymorphismand inheritance

ndash SpeculativeGenerality (SG) A class that is defined as abstract but that has veryfew children which do not make use of its methods

ndash SwissArmyKnife A class whose methods can be divided in disjunct set of manymethods thus providing many different unrelated functionalities

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 9: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

We choose only these antipatterns because (1) they are well-described by Brownet al (1998) (2) we could find enough of their occurrences in several releasesof several of the studied systems and (3) they are representative of design andimplementation problems with data complexity size and the features provided byclasses The specifications of these antipatterns are outside of the scope of this paperand available in Moha (2008)

Our independent variables are the number of classes participating in the 13antipatterns In our computations we use variables APi jk which indicate thenumber of times that a class i participates in an antipattern j in a release k For RQ1and RQ3 we aggregate these variables into a Boolean variable APik indicating if aclass i participates or not in any antipattern

23 Dependent Variables

Dependent variables measure the phenomena related to classes participating inantipatterns

RQ1 and RQ2 Change-proneness refers to whether a class underwent at least achange between release k (in which it was participating in some antipatterns) andthe subsequent release k + 1 Changes are identified for each class in a system bylooking at commits in their control-version systems (CVS or SVN) For the sake ofsimplicity we assumed to have one class per file This assumption could introduce anerror in case of non-public top-level classes and inner classes We did not find anyinner class participating in any antipattern in the analysed releases of the systemsNon-public top-level classes are rare and did not participate in any antipattern

RQ3 and RQ4 Fault-proneness refer to whether a class underwent at least a fault-f ixing change between releases k and k + 1 Fault fixing changes are documented intext reports that describe different kinds of problems in a system They are usuallyposted in issue-tracking systemsmdasheg Bugzilla for the four studied systemsmdashbyusers and developers to warn their community of pending issues with its function-alities issues in these systems deal with different kinds of change requests fixingfaults adding features restructuring and so on We trace faultsissues to changes bymatching their IDs in the commits (Fischer et al 2003)

For Mylyn and Rhino we consider a set of manually-validated and publicly-available faults (Eaddy et al 2008) For ArgoUML issues dealing with fixingfaults are marked as ldquoDEFECTrdquo in the issue tracking system2 For Eclipse sucha ldquoDEFECTrdquo tag was not used and given the high number of issues (34634 betweenreleases 10 and 34) a manual classification is not practical Thus we consider issuesposted on the Eclipse Bugzilla that (1) are referred to as ldquoBug ltissueIDgtrdquo in theCVS commits (2) have the Resolution field set to ldquoFIXEDrdquo or the Status field setto ldquoCLOSEDrdquo ie they indeed required some changes and (3) are not tagged asldquoEnhancementrdquo in the Severity field Our choice however does not guarantee thatall the considered issues are fault-fixing issues

2httpargoumltigrisorgissues

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 10: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

RQ5 We measure the sizes of classes participating or not in antipatterns using theirLOCs excluding comments and blank lines Each classes is associated with its sizethe total number of antipatterns and the kinds of antipatterns in which it participatesAbstract and native methods and methods declared in interfaces count for zero LOCas they do not have a body (or have a body not implemented in Java)

RQ6 We count the number of structural and non-structural changes occurring inantipattern classes vs other classes between two releases k and k + 1 As in previouswork (Aversano et al 2007 Di Penta et al 2008) we consider as structural changesthose changes that would alter the class interface ie additionremovalchangeofto attributes additionremoval of methods or changes to the method signaturesie change of return type exception(s) being thrown parameter type additionre-movalchange of parameters We consider as non-structual changes those related tomethod bodies Changes were identified using an analyzer developed with JavaCC3

(and used in our previous work) which extracts class diagram models from sourcecode and a Perl script which identifies differences between two models Furtherkinds of changesmdasheg those modifying exception-handling codemdashcould also beconsidered although we opt for a lightweight analysis because (1) we perform it onall revisions of all classes and (2) our focus is to identify the main changes affectingclasses participating in antipatterns

24 Analysis Method

RQ1 and RQ3 We study whether changes to and faults in a class are related to theclass participating in antipatterns regardless of the kinds of antipatterns Thereforewe test whether the proportions of classes exhibiting (or not) at least one changefaultsignificantly vary between classes participating in antipatterns and other classes Weuse Fisherrsquos exact test (Sheskin 2007) for H01 and H03 We did not consider releaseswhere either only antipattern or non-antipattern classes changed because of a verysmall number of changes (eg less than 10)

We also compute the odds ratio (OR) (Sheskin 2007) indicating the likelihood ofan event to occur eg change OR is defined as the ratio of the odds p of an eventoccurring in one sample ie the set of classes participating in some antipatterns(experimental group) to the odds q of it occurring in the other sample ie the setof classes participating in no antipattern (control group) OR = p(1minusp)

q(1minusq) An odds

ratio of 1 indicates that the event (eg change) is equally likely in both samples ORgt 1 indicates that the event is more likely in the first sample (experimental group ofclasses participating in some antipatterns) while an OR lt 1 indicates the opposite(control group of classes not participating in any antipatterns)

RQ2 and RQ4 We want to understand the relation of specific kinds of antipatternswith changes and faults Let us focus on RQ2 and changes We use a logistic regres-sion model (Hosmer and Lemeshow 2000) to correlate the presence of antipatternswith changes While in other contexts eg Gyimoacutethy et al (2005) such a model wasused for prediction purposes as in Khomh et al (2009b) and Vokaacutec (2004) we use it

3httpjavaccdevjavanet

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 11: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

as an alternative to the Analysis Of Variance (ANOVA) for dichotomous dependentvariables to test H02 and H04

In a logistic regression model the dependent variable is commonly a dichotomousvariable and thus it assumes only two values 0 1 eg changed or not Themultivariate logistic regression model is based on the formula

π(X1 X2 Xn) = eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn

1 + eC0+C1middotX1+middotmiddotmiddot+CnmiddotXn(1)

where

ndash Xi are characteristics describing the modelled phenomenon in our case thenumber of classes participating in an antipattern of kind i

ndash 0 le π le 1 is a value on the logistic regression curve The closer the value is to 1the higher is the probability that a class participating in this kind of antipatternunderwent a change

Then we count for each antipattern the number of times that across the analysedreleases the p-values obtained by the logistic regression are significant We use t =75 (as in current state of the art literature (Conte and Campbell 1989 Vicinanzaet al 1991)) to assess whether classes participating in a specific kind of antipatternhave significantly greater odds to change than others If these classes are more likelyto change in more than t releases then we say that this antipattern has a significantimpact on increasing the change-proneness

RQ5 We perform the analysis related to RQ5 in three steps First we compare foreach release the average size of (1) classes participating in at least one antipatternand (2) classes participating in no antipattern We use the MannndashWhitney test andcompute Cohen d effect size (Cohen 1988) For independent samples and unpairedanalyses the Cohen d effect size is the difference between the means M1 and M2

divided by the pooled standard deviation σ =radic

(σ 21 + σ 2

2 )2 of both groups d =(M1 minus M2)σ The effect size is small for 02 le d lt 05 medium for 05 le d lt 08and large for d ge 08 (Cohen 1988) We expect the test results to be statisticallysignificant and the odds ratios to be greater or equal to 1 because many antipatternsare according to their definitions related to size eg Blob ComplexClass andLargeClass

Second we perform the same test and compute the same odds ratios betweenthe set of classes participating in each antipattern and those not participating in anyantipattern We expect that for some antipatterns the test would not be significantandndashor the odds ratios would be lower than 1 Indeed while the definitions of someantipatterns directly relate to their size others specifically target small classes egLazyClass or are orthogonal to size eg ClassDataShouldBePrivate

Third we again perform Fisherrsquos exact test and compute the odds ratios betweenlarge classes participating or not to size-related antipatterns ie Blob Complex-Class and LargeClass We single out the classes whose sizes are greater than the75 percentile and divide them in two sets those participating in the consideredantipatterns and those that do not participate in these antipatterns We expect thatclasses participating in Blob ComplexClass and LargeClass antipatterns are notsignificantly larger than the largest classes

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 12: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Table 3 Change-proneness ORs Releases where Fisherrsquos exact test did not show significantdifferences are highlighted in gray ORs lt 1 are also highlighted in gray

RQ6 We again use Fisherrsquos exact test to compare the proportions of structuralchanges in classes participating in antipatterns with those of non-structural changesalso in classes not participating in any antipattern

3 Study Results

This section reports the results of our empirical study which are further discussed inSection 4 Detailed results can be found in a technical report (Khomh et al 2009a)while raw data is available on-line4

31 RQ1 What is the Relation between Antipatterns and Change-proneness

Table 3 summarises the odds ratios when testing H01 Each row shows for eachsystem a release number and the ORs of classes participating in at least oneantipattern in that release to exhibit at least one change before the next releaseIn all releases except Eclipse 10 Fisherrsquos exact test indicates a significant differenceof proportions between change-prone classes among those participating and not inantipatterns

4httpwwwptidejnetdownloadsexperimentsemse10

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 13: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Odds ratios vary across systems and within each system across releases Whilein few cases ORs are close to 1 ie the odds is even that a class participating in anantipattern changes or not in some pairs of systemsreleases such as ArgoUML 020Mylyn 20M3 or Rhino 15R41 ORs are greater than 25 Overall ORs for Eclipseare lower than those of other systems by one or two orders of magnitude The oddratios of classes participating in some antipatterns to change are in most cases higherthan that of other classes

We therefore conclude that in most cases there is a relation between antipatternsand change-proneness a greater proportion of classes participating in antipatternschange with respect to other classes The rejection of H01 and the ORs provide aposteriori concrete evidence of the impact of antipatterns on change-proneness

32 RQ2 What is the Relation between Kinds of Antipatternsand Change-proneness

Table 4 summarises the results of the logistic regression for the relations betweenchange-proneness and the different kinds of antipatterns A cell in the table re-ports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlate with change-proneness For example the cell at the intersection of the ArgoUML column andthe AntiSingleton row indicates that in eight releases of ArgoUML out of ten (80)classes participating in the AntiSingleton antipattern were significantly more change-prone than other classes

From Table 4 we can reject H02 for some antipatterns ie for antipatterns thatare significantly correlated to change-proneness in at least 75 of the releases high-lighted in gray Following our analysis method only MessageChain has a significantimpact on change-proneness in all systems classes participating in this antipatternare more likely to change than classes participating in other or no antipattern in

Table 4 Number (percentage) of releases where each antipattern significantly correlates withchange-proneness

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 14: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

more than 75 of the releases Other antipatterns have significant impact on a subsetof the systems LongMethod in ArgoUML Eclipse and Mylyn LongParameterListin ArgoUML and Eclipse AntiSingleton and RefusedParentBequest in ArgoUMLComplexclass and LazyClass in Eclipse

We conclude that there is a relation between kinds of antipatterns and change-proneness but not for all antipatterns and not consistently across systems andreleases

33 RQ3 What is the Relation between Antipatterns and Fault-proneness

Table 5 summarises Fisherrsquos exact test results and ORs for H03 Similarly toTable 3 each row shows for each system a release number and the ORs of classesparticipating to at least one antipattern in that release to exhibit at least one fault-fixing change before the next release The differences in proportions are significantand thus we can reject H03 in all cases The proportion of classes participating inantipatterns and reported in faults is between 132 and 3129 times larger than thatof other classes

Odds ratios for faults are not always higher than those for changes althoughclasses participating in antipatterns are more likely to exhibit fault-fixing changesthan other classes they seem to be even more likely to undergo restructuring changesin addition to fault-fixing changes than other classes

Therefore we conclude that there is a relation between antipatterns and fault-proneness although this relation is not as strong as the relation with change-proneness

Table 5 Fault-proneness ORs Releases where Fisherrsquos exact test did not show significant differencesare highlighted in gray

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 15: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

34 RQ4 What is the Relation between Particular Kinds of Antipatternsand Fault-proneness

Table 6 reports the results of the logistic regression for the relations betweenfault-proneness and kinds of antipatterns Similarly to Table 4 a cell in the tablereports the number (and percentage) of releases for a given system in which theparticipation of classes in a given antipattern significantly correlates with fault-proneness For Mylyn we could analyse only three releases for fault-proneness andfor Rhino only nine releases because of the limited number of faults occurring insome releases (lt10) We can reject H04 for MessageChain in Eclipse and RhinoAntiSingleton ComplexClass LazyClass and LongMethod in Eclipse

We conclude that there is a relation between kinds of antipatterns and fault-proneness but not for all antipatterns and not consistently across systems andreleases

35 RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizesof These Classes

We found that as expected classes participating in some specific kinds of antipat-terns are significantly larger than classes not participating in antipatterns (with amedium to large effect size) (Detailed results are reported in the technical report(Khomh et al 2009a)) Yet we observe the following exceptions

ndash Classes participating in AntiSingleton are not significantly larger than classes notparticipating in any antipattern in ten out of 18 Mylyn releases

ndash Classes participating in LazyClass are significantly smaller than other classes inall the analysed releases of ArgoUML Mylyn and Rhino This observation wasexpected because by definition LazyClasses are small

Table 6 Number (percentage) of releases where each antipattern significantly correlates with fault-proneness

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 16: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

ndash Classes participating in RefusedParentBequest are not significantly larger thanclasses not participating in any antipattern in one out of ten ArgoUML releases15 out of 18 Mylyn releases and nine out of 13 Rhino releases

ndash Classes participating in SpeculativeGenerality are not significantly larger thanclasses not participating in any antipattern in five out of ten ArgoUML releasesall 18 Mylyn releases and all 13 Rhino releases

In Eclipse all kinds of antipatterns have a significantly larger size than classes notparticipating in any antipattern although for the above-mentioned antipatterns theeffect size was generally small while for the others it was medium to small

Finally Table 7 reports results of the Fisherrsquos exact test (highlighted ORs arestatistically significant) comparing change- and fault-proneness of classes having asize greater than the 75 percentile of the overall size distribution and participatingor not in the Blob ComplexClass and LargeClass antipatterns For example forEclipse release 10 the ORs of large classes participating (or not) to Blob Complex-Class and LargeClass are 098 for change-proneness and 212 for fault-pronenessORs are greater to 1 in

1 ArgoUML six out of ten releases for change-proneness and four out of sevenreleases for fault-proneness

2 Eclipse nine out of 13 releases for change-proneness and eight out of 13 releasesfor fault-proneness (plus two other cases where the ORs are just above one)

3 Mylyn 13 out of 15 releases for change-proneness (plus another case where theORs is just above one) while it was not possible to get statistically-significantresults for fault-proneness due to the limited number of detected occurrences

4 Rhino seven out of eight releases for change-proneness and four out of fivereleases for fault-proneness

However the Fisherrsquos exact test only reported statistical significance in a smallnumber of casesmdashdue to the limited number of classes having a size above the 75percentile of the distribution

ORs are always above one (in most cases above two) and reach 1366 every timethe Fisherrsquos exact test found a statistically-significant difference in the proportions ofchanges and fault-fixing changes between classes participating or not in size-relatedantipatterns Therefore large classes participating in antipatterns change more andare more fault-prone than large classes not participating in any antipatterns

We conclude that classes participating in antipatterns are generally larger thanother classes This conclusion was expected because many antipatterns such as BlobComplexClass LargeClass or LongMethod stem from an excessively large size andof other negative characteristics of the classes We also conclude that except forsome releases of the analysed systems some kinds of antipatterns (AntiSingletonLazyClass RefusedParentBequest and SpeculativeGenerality) describe symptomsof poor design that are unrelated to size

We thus generally conclude that some kinds of antipatterns are related to size asexpected by their def initions but size only does not explain the classes greater change-and fault-proneness

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 17: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Tab

le7

OR

sof

chan

ge-

and

faul

t-pr

onen

ess

for

larg

ecl

asse

spa

rtic

ipat

ing

inth

eB

lob

Lar

geC

lass

Com

plex

Cla

ssan

tipa

tter

nsw

ith

resp

ect

tola

rge

clas

ses

not

part

icip

atin

gin

any

anti

patt

ern

(hig

hlig

hted

valu

esin

dica

test

atis

tica

lsig

nifi

canc

eof

the

Fis

herrsquo

sex

actt

est)

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 18: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Table 8 Proportion ofchanges to antipattern classesvs other classes Fisherrsquos exacttest result and ORs

Systems p-values ORs

ArgoUML lt001 122Eclipse lt001 103Mylyn lt001 119Rhino 008 104

36 RQ6 What Kind of Changes are Performed on Classes Participatingor Not in Antipatterns

While studying the relation between kinds of antipatterns and change- and fault-proneness we also studied the kinds of changes impacting classes participatingin antipatterns Table 8 reports Fisherrsquos exact test results and odds ratios for theproportions of structural changes to classes participating in antipatterns with respectto those of other classes For simplicityrsquos sake and because there are no substantialvariations across releases we report results obtained by aggregating data from thewhole history of each system rather than for each release separately

Table 8 shows that classes participating in antipatterns in Rhino do not undergomore structural changes than other changes it is a small system and therefore thedifferent kinds of changes may occur to any class Although we can reject H06 forEclipse the OR asymp 1 downplays this rejection which we explain by the extensive useof inheritance in Eclipse (Aversano et al 2007) leading to few structural changes toclasses

Detailed analysis for different kinds of antipatterns reveal that for all antipatternsexcept LazyClass in ArgoUML Mylyn and Rhino and RefusedParentBequestin Eclipse classes participating in antipatterns undergo more structural changesthan others changes (eg changes in the method implementations) The methodsimplementations of LazyClasses as reported in Section 32 change to increase theirbehaviour Changes in the method organisations and implementations of Refused-ParentBequest are generally performed to correct them

We conclude that structural changes occur more often on classes participating toantipatterns than other changes

4 Discussion

We now discuss the results using the releasesrsquo histories We also discuss the relationbetween antipattern and developersrsquo intent and refactoring activities Table 9 sum-marises our findings

41 Correlations Among Antipatterns

We analysed whether a correlation exists between the presence of different antipat-terns and hence between the rules and metrics used in their definitions (ie themetrics thresholds and values in each revisions of each system) We used the non-parametric Spearman correlation which results indicate that Blob ComplexClassand LargeClass are lowly correlated (05 lt ρ lt 07 (Cohen 1988)) in all releasesof ArgoUML Mylyn and Rhino but in none of Eclipse For all other antipatterns

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 19: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Table 9 Summary of our findings

ArgoUML Eclipse Mylyn Rhino Explanations

RQ1 sim Future changes could impactseveral classes

RQ2mdashLongMethod times Complex code likely requiresmore changes

RQ2mdashMessageChains Chains of messages possiblyincrease the change impact

RQ3 Antipatterns may increase the riskthat developers introduce faults

RQ4mdashMessageChains times times Long chains of messages reduce thedevelopersrsquo view of the contextwhich may lead to more faults

RQ5 Size per se does not explain thechange-fault-proneness of classesparticipating in antipatterns

RQ6 Classes participating in antipatternsare more subject to changesimpacting their interface andthus possibly their change-and fault-proneness

and releases we obtained no correlation among antipatterns (ρ 05) We expectedthat we would not find correlations among antipatterns because their definitions aredifferent and capture different types of design pitfalls We also analysed whetherwe could find a correlation between the presence of different antipatterns and tra-ditional object-oriented metrics such as Chidamber and Kemererrsquos metric suite Asexpected we could not find a correlation that was consistent across the systems andtheir releases because antipatterns are higher level than metrics thus showing thatantipatterns albeit detected using metrics bring different information to developersthan metrics

42 Statistical SignificanceUnexpected Ratios

Tables 3 and 5 show that in most cases classes belonging to antipatterns are morechange- and fault-prone than others However there is a case were H01 could notbe rejected for lack of statistical significance and four cases with unexpected ORswhich indicate that classes participating in antipatterns changed less than others(highlighted in the tables)

We explain the lack of statistical significance for Eclipse 10 by the major changesbetween releases 10 and 20 which imply that many classes were addedchanged(Eclipse size increased from 781 to 1250 KLOCs and 4647ndash6742 classes) irrespec-tive of their participation in antipatterns

The first case with an unexpected OR concerns classes having changed betweenEclipse 20 and 211 with OR = 075 Eclipse 21 introduced several new featureswith respect to 20 including navigation history sticky hovers prominent statusindication and so on

The second third and fourth cases concern classes having changed betweenreleases 30 and 32 Eclipse 30 was a major improvement over the 2x series with

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 20: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

a new runtime platform implementing the OSGi R30 specifications5 to become aRich Client Platform and support any type of tooling (not necessarily an IDE)Eclipse 3 had many problems at first corrected in the subsequent 301 302 and32 releases No less than 15 153 minus 11 166 = 3 987 classes were added between 30and 32 which did not only participate to antipatterns Eclipse size increased by3 271 minus 2 260 = 1 011 KLOCs

43 ChangesFaults Odds Ratios

For ArgoUML change-proneness ORs are never smaller than 398 The highest ORoccurs between releases 020 and 022 period during which a major restructuring6

took place with many faults fixed and 293 issues resolved ORs for fault-fixingare high but often lower than those for change-proneness which suggests thatantipatterns are potential symptoms of change-proneness but not necessarily offault-proneness they make a system harder to maintain because future changes willlikely impact several classes but only indirectly impact fault-proneness The highestfault-related OR occurs between releases 014 and 016 period during which manyfault-fixing activities took place Release 016 is the release with the highest numberof fault-fixing changes (Khomh et al 2009a) 851 the second-highest is release 026with 591

For Eclipse we found lower ORs than those of other systems for both change-and fault-proneness We explain such a difference by the fact that sim80 of Eclipseclasses participate in at least one antipattern with a higher proportion of these classesto be LazyClasses (eg 5171 in the first release) Therefore we expected to findlower ORs because Eclipse includes many more classes participating in antipatternsthan not The high proportion of LazyClasses conforms to the results of previousstudies (Aversano et al 2007) which observed that Eclipse is designed to evolvethrough sub-classing which in turn leads to a lower class change-proneness

Eclipse is the only system with greater ORs for faultissue- than change-pronenessWe recall that we considered issues as discussed in Section 23 and that as discussedin our previous study (Antoniol et al 2008) a majority of Eclipse issues are likely notrelated to faults but to other maintenance activities such as restructuring Thus it isconsistent to find more classes impacted by issues with respect to faults only

Verifying H01 for Mylyn between releases 20M3 and 20 results in an extremeOR = 20660 which we explain by the amount of issues fixed between the releases3047 Table 5 shows that antipatterns are correlated with fault-fixing changes TheOR reflects this relation plus that with other changes unrelated to faults such asrestructuring which impacted classes in antipatterns

For Rhino ORs for change-proneness range between 1041 in release 14R3and 3305 in 16R4 two numbers which we explain by (1) the number of new

5httpwwweclipseorgosgi6httpargoumltigrisorgservletsNewsItemViewnewsItemID=16757httpeclipseorgmylynnewnew-20html

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 21: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

features added in release 15R1 many classes not participating in antipatterns wereaddedchanged and (2) the number of issues between releases 16R3 16R4 and16R5 respectively 4 7 and 248 More faults have been filled against 16R4 than otherreleases thus explaining the change of ORs

44 Kinds of Antipatterns and ChangesFaults

Tables 4 and 6 show that antipatterns impact change- and fault-proneness but thatwe could not reject H02 or H04 for all of them in particular LargeClass Blob Class-DataShouldBePrivate SpaghettiCode SpeculativeGenerality and SwissArmyKnifeWe explain this fact by the low number of classes participating in these antipatternsfor examples on average in Eclipse there are 479 LargeClasses for 11618 classes perrelease and in ArgoUML 80 for 960 classes per release (Khomh et al 2009a) Thenumber of occurrences of the SpaghettiCode is even lower with on average two perEclipse release No SpaghettiCode was found in ArgoUML Mylyn and Rhino

Eclipse ArgoUML Mylyn and Rhino use extensively object orientation Theyldquodivide to conquerrdquo which helps to avoid Blob which is a class that knowsdoes toomuch LargeClass and SwissArmyKnife which are complex classes that provides toomany services and SpeculativeGenerality which is an abstract class with very fewchildren The use of polymorphism and encapsulation explains the few number ofClassDataShouldBePrivate which occurs when the data encapsulated by a class ispublic as well as the SpaghettiCode which is a class with too many long methodswith too many branches

Among the remaining antipatterns we rejected for MessageChain H02 for allsystems and H04 for Eclipse and Rhino The MessageChain antipattern characterisesclasses that use long chains of calls to perform their functionality which makesthem dependent on classes ldquofarrdquo from each other Finding many occurrences ofthe MessageChain is not surprising in Eclipse and Rhino Eclipse has thousandsof classes developers fixing issues are likely to touch many classes because oftheir dependencies with one another and the likelihood of faults related to thesedependencies is high Rhino is small but the classes forming its parse tree andinterpreter are tightly coupled

The other antipatterns satisfy the conditions to reject H02 or H04 for at least onesystem By tracking their occurrences through releases we found that antipatternsare generally removed from the systems while new ones are introduced Thus someantipatterns are in small number or are absent in some releases thus the logisticregression analysis indicated that some antipatterns are statistically significant onlyin some releases

Classes participating in the antipatterns ComplexClass and LazyClass are morechange- and fault-prone than others in Eclipse ComplexClass characterises classeswith a higher number of complex methods than the average class thus developersadding new features or fixing issues are more likely to touch these classes whichconsequently increases their likelihood to have faults This observation confirmsFowler and Brownrsquos warnings about complex classes Lazy classes tend to be

8httpsbugzillamozillaorgbuglistcgiquery_format=specificamporder=relevance+descampbug_status=__all__ampproduct=Rhinoampcontent=16R3|16R4|16R5

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 22: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

removed or changed to increase their behaviour while others are introducedthere were 2765 lazy classes in Eclipse 10 (59 of the system) 8967 in 331(52) Class orgeclipsesearchinternalcoreSearchScope forexample was a lazy class in 10 but in 30 2 methods and 2 constructors wereadded and the inner class WorkbenchScope was removed New lazy classes egorgeclipseteaminternalccvsuiactionsShowEditorsActionwere introduced

Classes participating in AntiSingleton are more faultissue-prone in Eclipse andmore change-prone in ArgoUML than other classes They are generally removedfrom the system or changed In Eclipse 16 of the AntiSingleton classes wereremoved between releases 10 and 30 and only 53 of the classes were stillAntiSingleton in that release the other classes were changed For example all meth-ods of orgeclipsecompareinternalCompareWithEditionAction anAntiSingleton were removed between releases 10 and 30 and the class became aLazyClass with no behaviour

We can reject H02 for LongMethod for ArgoUML Eclipse and Mylyn andH04 for Eclipse LongMethod classes are more change-prone than any other classand more fault-prone than other Eclipse classes possibly because such classes arecomplex and thus more likely to change to fix issues Faults are also more likely tobe introduced when changing these classes due to their complexity Moreover weobserve that LongMethod classes keep on participating in this antipattern duringtheir evolution and are in general central to the system core features Previousstudies eg Aversano et al (2007) confirm that central classes are more change-prone

Classes participating in RefusedParentBequest are more change-prone thanothers in ArgoUML possibly due to the need for re-organising badly organisedhierarchies this antipattern occurs when a subclass does not use attributes andorpublicprotected methods inherited from its parent We expected this results becauseArgoUML implements deep hierarchies of models diagram elements and tools

Although classes participating in antipatterns are more change- and fault-pronethan other classes in some situations an antipattern may be the best and possiblyonly way to implement some requirements andndashor functionalities For example oneof the LargeClass in Eclipse is class orgeclipseswtinternalwin32OS which is theunique access point to the underlying Windows platform for the Standard WidgetToolkit While the class is large it provides a unique access point to non-object-oriented platform-dependent resources thus increasing portability and possiblyefficiency

5 Threats to Validity

With our study we show that antipatterns do impact the change- and fault-pronenessof classes and that certain kinds of antipatterns have a greater impact than othersHowever we do not claim that antipatterns cause changes and faults Indeed ourstudy cannot say anything about the reasons for classes to have antipatterns andconsequently the reasons for changesfaults to occurappear in these classes We onlyempirically verified that classes with antipatterns are more change- and fault-pronethat others thus confirming the conjecture in the literature

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 23: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

In addition some parts of the source code of a system will always change asnew functionalities are added and as faults are fixed Thus we cannot use only thecorrelation between antipatterns and change proneness to predict which classes willchange in the future Indeed the fact that some classes are more likely to change in arelease has complex reasons that are beyond the scope of this paper as already notedby Zimmermann et al (2004)

We now discuss the threats to validity of our study following the guidelines for casestudy research (Yin 2002) Construct validity threats concern the relation betweentheory and observation in this study they are mainly due to measurement errorsThe identification of changes is reliable because based on the CVSSVN change logsYet it may not reflect exactly the commits related to a (fault-fixing) change anddevelopersrsquo efforts accurately because developers follow different patterns for com-mitting their changes eg from committing changes as faults are fixed to committingall changes once a week However these varying patterns do not affect our measureof change-proneness because we just observed whether a class underwent at leastone change during a given period of time

We were able to identify fault-fixing changes for ArgoUML Mylyn and Rhinousing an existing classification (Eaddy et al 2008) The only cases where somefixed issues might not be related to faults is Eclipse as we pointed out in ourprevious work (Antoniol et al 2008) We mitigated the use of possibly erroneousfaults by discarding issues explicitly labeled as ldquoEnhancementsrdquo and focusing onissues marked as ldquoFIXEDrdquo or ldquoCLOSEDrdquo because they required some changes Itis unlikely in Eclipse that hard-to-fix issues would stay longer ldquoOPENEDrdquo thanothers because Eclipse is being backed up by IBM which strives to offer a stableproduct

We did not include release 21 of Eclipse but its inclusion is unlikely to changeour results between releases 10 and 20 we observed 11632 class change commitsand 1541 fault fixings between 20 and 21 21211 class change commits and 1756fault fixing while between 21 and 211 only 3664 change commits and 240 faultfixings We thus observed that the number of committed changes and fixed faultsbetween release 21 and 211 is about one order of magnitude smaller than thosenumbers between any other two subsequent releases Moreover we analyzed theodds ratios of classes participating in antipatterns to exhibit changesfaults withrespect to classes not participating in antipatterns between releases 21 and 211The Fischerrsquos exact test indicated a significant difference with odds ratios of 259for change proneness and of 159 for fault proneness thus consistent with the resultsobtained when analyzing other pairs of subsequent releases

Finally we observe that DECOR includes its authorsrsquo subjective understanding ofthe antipatterns and that the accuracy of its detection algorithms is not perfect (Mohaet al 2010) DECOR accuracy impacts our results because we may have classified aclass not participating in an antipattern as participating in it and vice-versa Othertechniques and tools should be used to confirm our findings

Threats to internal validity do not affect this study being an exploratory study(Yin 2002) We do not claim causation but relate the presence of antipatterns withthe occurrences of changes faults and issues Nevertheless we tried to explainmdashby looking at specific changes commit notes and change historiesmdashwhy someantipatterns could have been the cause of changesissuesfaults We are aware thatantipatterns can be dependent to each other and relied on the logistic regressionmodel-building procedure to select the subset of non-correlated antipatterns When

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 24: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

studying antipatterns we did not exclude that in a particular context an antipatterncan be the best way to implement or design a (part of a) system For exampleautomatically-generated parsers are often Spaghetti Code ie very large classes witha high number of very long methods with many branches However this observationdoes not impact our study because we only consider antipatterns as warnings

Conclusion validity threats concern the relation between the treatment and theoutcome We paid attention not to violate assumptions of the performed statisticaltests Also we mainly used non-parametric tests that do not require to makeassumption about the data set distribution For Mylyn we are aware that fault-proneness is analysed on only three releases for which the manual fault classificationis available (Eaddy et al 2008) thus it would be difficult to draw strong conclusionsfor this system about the relation between antipatterns and fault-proneness

Reliability validity threats concern the possibility of replicating this study Weattempted to provide all the necessary details to replicate our study Moreoverthe source code repositories and issue-tracking systems of the studied systems areavailable to obtain the same data The raw data used to compute the statistics isavailable on-line4

Threats to external validity concern the possibility to generalise our results Firstwe studied four systems having different sizes and belonging to different domainsNevertheless further validation on a larger set of systems is desirable consideringsystems from different domains as well as several systems from the same domainto better analyze the cross-domain and inter-domain influence of antipatterns onchange- and fault-proneness Second we used a particular yet representative subsetof antipatterns Different antipatterns could lead to different results in future work

6 Related Work

We now discuss work on antipatterns design patterns and metrics in relation tosoftware evolution

Code SmellsAntipatterns Def inition and Detection The first book on ldquoantipat-ternsrdquo in object-oriented development was written in 1995 by Webster (1995) hiscontribution includes conceptual political coding and quality-assurance problemsRiel (1996) defined 61 heuristics characterising good object-oriented programmingto assess a system quality manually and improve its design and implementationFowler (1999) defined 22 code smells suggesting where developers should applyrefactorings Mantyla (2003) and Wake (2003) proposed classifications for codesmells Brown et al (1998) described 40 antipatterns including the well-known Bloband Spaghetti Code These books provide in-depth views on heuristics code smellsand antipatterns aimed at industrial and academic audiences They are the basis ofall approaches to detect (semi-)automatically code smells and antipatterns such asDECOR (Moha et al 2010) used in this study

Several approaches to specify and detect code smells and antipatterns exist inthe literature They range from manual approaches based on inspection techniques(Travassos et al 1999) to metric-based heuristics (Marinescu 2004 Munro 2005

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 25: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Oliveto et al 2010) using rules and thresholds on various metrics or Bayesian beliefnetworks (Khomh et al 2009d)

Some approaches for complex software analysis use visualisation (Dhambri et al2008 Simon et al 2001) Visualisation is an interesting compromise between fullyautomatic detection techniques which are efficient but loose track of the contextand manual inspections which are slow and subjective (Langelier et al 2005)However visualisation requires human expertise and is thus time-consuming Otherapproaches perform fully automatic detection and use visualisation techniques topresent their results (Lanza and Marinescu 2006 van and Moonen 2002)

This previous work significantly contributed to the specification and detection ofantipatterns The approach used in this study DECOR builds on this previous workto offer a method to specify and automatically detect antipatterns

Code SmellsAntipatterns and Software Evolution Deligiannis et al (2003 2004) pro-posed the first quantitative study of the relation between antipatterns and softwarequality They performed a controlled experiments with 20 students on two systems tounderstand the impact of God Classes on the understandability and maintainabilityof systems The results of their study suggested that God Classes affect the evolutionof design structures and considerably affects the subjectsrsquo use of inheritance

Bois et al (2006) showed that the decomposition of God Classes into a numberof collaborating classes using well-known refactorings can improve comprehensionThey did not consider source code evolution phenomena

Wei and Shatnawi (2007) investigated the relationship between the probability ofa class to be faulty and some antipatterns based on three versions of Eclipse andshowed that classes with the antipatterns God Class Shotgun Surgery and LongMethod have a higher probability to be faulty than other classes They concludedon the need for broader studies to validate their results We provide such a broaderstudy by studying the impact of 13 antipatterns on change- and fault-proneness infour systems

Olbrich et al (2009) analysed the historical data of Lucene and Xerces overseveral years and concluded that God Classes and Shotgun Surgery have a higherchange frequency than other classes with God Classes featuring more changes Theyneither performed an analysis to control the effect of the size on their results norstudied the kinds of changes affecting these antipatterns

Using Azureus and Eclipse Khomh et al (2009b) studied the impact of classeswith code smells on change-proneness and the particular impact of certain codesmells They showed that the likelihood for classes with code smells to change is veryhigh except in a few explainable cases Some of the studied code smells are similarto some of the antipatterns studied in this paper although antipatterns identifypoor design solutions at a higher level of abstraction than code smells Consideringthat code smells make classes more change-prone it is natural that classes havingantipatterns are also more change-prone than classes without antipattern Howeverthe study reported in this paper was necessary to confirm this relation becauseprevious work did not test the different impact between having one two or moreparticular code smells It could have been possible that having some combinations ofcode smells could have rendered classes more difficult to change and consequently

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 26: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

less change-prone than others Also in this paper we add three additional systems(ArgoUML Mylyn and Rhino) we study fault-proneness in addition to change-proneness and we analyse the particular kinds of changes occurring on classesparticipating in certain antipatterns

This previous work raised the awareness of the community towards the impactof code smells and antipatterns on software development We build on this previouswork and propose a more detailed and extensive empirical study of the impact ofantipatterns on code evolution phenomena

Design Patterns and Software Evolution While antipatterns are poor design choicesdesign patterns are recurring solutions to design problems increasing reusabilityexpandability and understandability (Gamma et al 1994) Several authors studiedthe impact of design patterns on systems Vokaacutec (2004) analysed the correctivemaintenance of a large commercial system over three years and compared the faultrates of classes that participated in design patterns with those of other classes Henoticed that participating classes were less fault-prone than others with differencesin fault rates ranging from 63 to 154 on average He also noticed that the Observerand Singleton patterns are correlated with larger classes that classes playing roles inFactory Method were more compact less coupled and less fault-prone than othersclasses and that no clear tendency existed for Template Method His work providedthe first quantitative evidence of a relationship between design patterns and the fault-proneness of systems

Bieman et al (2003) analysed four small and one large systems to evaluate theimpact of design patterns on change-proneness and concluded that participatingclasses are rather more change-prone Khomh and Gueacuteheacuteneuc (2008) performed anempirical study of the impact of the 23 design patterns from Gamma et al (1994) onten different quality characteristics and concluded that patterns do not necessarilypromote reusability expandability and understandability Other studies focused onthe change-proneness and resilience to change of design patterns (Aversano et al2007) and of classes playing a specific role in design patterns (Di Penta et al 2008)They concluded that design patterns and change-proneness are related

In our previous work (Khomh et al 2009c) we studied the impact on classes ofplaying zero one and two or more roles in design motifs We used several metricsincluding the number of past and future changes and the number of faults to studythe impact of playing roles We showed using a representative population of classesthat classes playing one two or more roles are more change-prone than classesplaying zero roles We could not find any statistically significant impact of playingone role vs two roles on change- and fault-proneness but classes playing two roleschanged 152 times more than classes playing one role We can relate the impacton class change- and fault-proneness of participating in two or more antipatternswith the impact of playing two or more roles in design motifs Indeed in bothcases the impacted classes are bigger than others and play either a central role inthe functioning of the system (design motifs) or in the maintenance of the system(antipatterns) Future work should study the statistical relations between designmotifs and antipatterns

While this previous work investigated the impact of design patterns we study theimpact of antipatterns on code evolution phenomena Vokaacutecrsquos work inspired this

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 27: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Listing 1 Specification of the Blob Antipattern

study in the use of logistic regression to analyse the correlations between antipatternsand change- and fault-proneness

Metrics and Software Evolution Several studies such as Basili et alrsquos seminal work(Basili et al 1996) used metrics as quality indicators Cartwright and Shepperd(2000) conducted on an industrial C++ system (over 133 KLOCs) an empirical studythat supported the hypothesis that classes in inheritance relations are more fault-prone than others Consequently Chidamber and Kemerer (CampK) DIT and NOCmetrics (Chidamber and Kemerer 1994) could be used to find classes likely to havehigher fault rates Gyimoacutethy et al (2005) compared the capability of sets of CampKmetrics to predict fault-prone classes in Mozilla using logistic regression and othermachine learning techniques They concluded that CBO is the most discriminatingmetric They also found LOC to discriminate fault-prone classes well Zimmermannet al (2007) conducted an empirical study on Eclipse showing that a combinationof complexity metrics can predict faults and that the more complex the code themore faults El Emam et al (2001) showed that after controlling for the confoundingeffect of size the correlation between metrics and faults disappeared many metricsare correlated with size and therefore do not bring more information to predictfault-proneness than size

In our study we relate change- and fault-proneness to antipatterns rather than tometrics and control for the size effect We do not claim that antipatterns are betterpredictor of change- and fault-proneness than metrics we use them as abstractionsof metrics thus likely to be better indicators than metrics for developers becausethey refer to specific design and implementation styles Antipatterns can tell thedevelopers whether a design choice is ldquopoorrdquo or not by means of thresholds definedover metrics and of lexical information

For example the Blob is defined by imposing some empirical thresholds uponvalues of cohesion metrics and other metrics as shown in Listing 1 suggesting tothe developers whether the class lack cohesiveness is too large and is associated todata classes If we were to provide developers only with the values of LCOM5 NADand NMD then they would have to judged by themselves whether such values areexcessive or not and warrant the classes has being tagged as a Blob

Another important issue about the potential usefulness of antipatterns is whetherthey provide more information than size El Emam et al (2001) found that manymetrics are correlated to size thus antipatterns could also be correlated to sizebecause they use metrics However as discussed in RQ5 (Section 35) we foundthat this is not the case for many antipatterns ie classes participating in some kinds

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 28: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

of antipatterns are not significantly larger than other classes Moreover large classesparticipating in antipatterns are generally more change- and fault-prone than otherlarge classes

7 Conclusions and Future Work

In this paper we provided empirical evidence of the negative impact of antipatternson classes change- and fault-proneness in four systems ArgoUML Eclipse Mylynand Rhino We studied the odds ratios of changes faults and issues on classesparticipating (or not) in 13 antipatterns in (overall) 54 releases of the four systemsWe showed through the five research questions RQ1ndash4 that classes participating inantipatterns are significantly more likely to be subject to changes and to be involvedin fault-fixing changes (issue-fixing changes for Eclipse) than other classes We alsoshowed that size alone cannot explain the participation of classes to antipatternswith RQ5 and thus that antipatterns bring additional complementary informationto developers to analyse their systems We also studied with RQ6 the kinds ofchanges that impacted classes participating in antipatterns and other classes andfound that in ArgoUML and Mylyn structural changes are more likely to occurin classes participating in antipatterns (although odds ratios are not high (asymp12))than in other classes while it is not the case for Eclipse and Rhino Furthermorewe analysed the correlations among antipatterns and found that the Blob Complex-Class and LargeClass are correlated with one another in all releases of ArgoUMLMylyn and Rhino but in none of Eclipse As expected other antipatterns areunrelated

This exploratory study provides within the limits of its validity evidence thatclasses participating in antipatterns are more change- and faultissue-prone thanclasses not participating in antipatterns The study also provides evidence to practi-tioners that they should pay attention to systems with a high number of classes partic-ipating in antipatterns because these classes are more likely to contain faults and tobe the subject of their change efforts More specifically managers and developers canuse these results to guide maintenance activities for example they can recommendtheir developers to avoid MessageChain as this antipattern is consistently relatedwith high fault and change rates

Future work includes replicating this study on industrial systems other thanEclipse on systems developed using different languages and with different an-tipatterns We are also interested in studying to what extent similar systemsmdashegdevelopment environments parser generators productivity toolsmdashexhibit similarrelationships between the presence of antipatterns and code change-fault-pronenessWe also plan to study the categorisation of classes as change-prone error-proneor none and compute Types I and II errors to assess whether antipatterns performbetter than metrics

Future work also includes studying further the relations between antipatterns andother characteristics of systems such as their architecture and the use of designpatterns Moreover it would be desirable to use antipatternsmdashother than metricsmdashto build more accurateinformative change- and fault-prediction methods Last but

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 29: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

not least further investigation devoted to mine change logs mailing lists and issuereports is desirable to seek evidence of causendasheffect relationships between thepresence of antipatternsmdashor the need to remove themmdashand the class change- andfault-proneness

References

Antoniol G Ayari K Di Penta M Khomh F Gueacuteheacuteneuc Y-G (2008) Is it a bug or an enhancementA text-based approach to classify change requests In Vigder M Chechik M (eds) Proceedingsof the 18th IBM centers for advanced studies conference (CASCON) ACM Press New York15 pp

Aversano L Canfora G Cerulo L Del Grosso C Di Penta M (2007) An empirical study on theevolution of design patterns In Proc of the the 6th European software engineering conf andsymp on the foundations of software engineering ACM Press New York pp 385ndash394

Basili VR Briand LC Melo WL (1996) A validation of object-oriented design metrics as qualityindicators IEEE Trans Softw Eng 22(10)751ndash761

Bieman JM Straw G Wang H Munger PW Alexander RT (2003) Design patterns and changeproneness an examination of five evolving systems In 9th international software metrics sym-posium (METRICSrsquo03) IEEE Computer Society Press Piscataway pp 40ndash49

Bois BD Demeyer S Verelst J Mens T Temmerman M (2006) Does god class decompositionaffect comprehensibility In Proceedings of the IASTED international conference on softwareengineering IASTEDACTA Press Calgary pp 346ndash355

Brown WJ Malveau RC Brown WH McCormick HW III Mowbray TJ (1998) Anti patternsrefactoring software architectures and projects in crisis 1st edn Wiley New York

Cartwright M Shepperd M (2000) An empirical investigation of an object-oriented software systemIEEE Trans Softw Eng 26(8)786ndash796

Chidamber SR Kemerer CF (1994) A metrics suite for object oriented design IEEE Trans SoftwEng 20(6)476ndash493

Cohen J (1988) Statistical power analysis for the behavioral sciences L Erlbaum AssociatesHillsdale

Conte SD Campbell RL (1989) A methodology for early software size estimation Technical ReportSERC-TR-33-P Purdue University

Deligiannis IS Shepperd MJ Roumeliotis M Stamelos I (2003) An empirical investigation of anobject-oriented design heuristic for maintainability J Syst Softw 65(2)127ndash139

Deligiannis IS Stamelos I Angelis L Roumeliotis M Shepperd MJ (2004) A controlled experimentinvestigation of an object-oriented design heuristic for maintainability J Syst Softw 72(2)129ndash143

Dhambri K Sahraoui H Poulin P (2008) Visual detection of design anomalies In Proceedings ofthe 12th European conference on software maintenance and reengineering Tampere FinlandIEEE Computer Society Press Piscataway pp 279ndash283

Di Penta M Cerulo L Gueacuteheacuteneuc Y-G Antoniol G (2008) An empirical study of the relationshipsbetween design pattern roles and class change proneness In Proceedings of the 24th interna-tional conference on software maintenance (ICSM) IEEE Computer Society Press Piscataway

Eaddy M Zimmermann T Sherwood KD Garg V Murphy GC Nagappan N Aho AV (2008) Docrosscutting concerns cause defects IEEE Trans Softw Eng 34(4)497ndash515

El Emam K Benlarbi S Goel N Rai S (2001) The confounding effect of class size on the validity ofobject-oriented metrics IEEE Trans Softw Eng 27(7)630ndash650

Fischer M Pinzger M Gall H (2003) Populating a release history database from version control andbug tracking systems In Proceedings of the international conference on software maintenanceAmsterdam Netherlands IEEE Computer Society Press Piscataway pp 23ndash32

Fowler M (1999) Refactoringmdashimproving the design of existing code 1st edn Addison-WesleyReading

Gamma E Helm R Johnson R Vlissides J (1994) Design patternsmdashelements of reusable object-oriented software 1st edn Addison-Wesley Reading

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 30: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Gyimoacutethy T Ferenc R Siket I (2005) Empirical validation of object-oriented metrics on open sourcesoftware for fault prediction IEEE Trans Softw Eng 31(10)897ndash910

Hosmer D Lemeshow S (2000) Applied logistic regression 2nd edn Wiley New YorkKhomh F Gueacuteheacuteneuc Y-G (2008) Do design patterns impact software quality positively In Pro-

ceedings of the 12th conference on software maintenance and reengineering (CSMR) IEEEComputer Society Press Piscataway

Khomh F Di Penta M Gueacuteheacuteneuc Y-G Antoniol G (2009a) An exploratory study of the impactof antipatterns on class change- and fault-proneness Technical Report Ecole Polytechnique deMontreal

Khomh F Di Penta M Gueacuteheacuteneuc Y-G (2009b) An exploratory study of the impact of codesmells on software change-proneness In Proceedings of the 16th working conference on reverseengineering (WCRE) IEEE Computer Society Press Piscataway

Khomh F Gueacuteheacuteneuc Y-G Antoniol G (2009c) Playing roles in design patterns an empirical de-scriptive and analytic study In Kontogiannis K Xie T (eds) Proceedings of the 25th internationalconference on software maintenance (ICSM) IEEE Computer Society Press Piscataway 10 pp

Khomh F Vaucher S Gueacuteheacuteneuc Y-G Sahraoui H (2009d) A bayesian approach for the detectionof code and design smells In Proceedings of the 9th international conference on quality software(QSIC) IEEE Computer Society Press Piscataway 10 pp

Langelier G Sahraoui HA Poulin P (2005) Visualization-based analysis of quality for large-scalesoftware systems In Proceedings of the 20th international conference on automated softwareengineering ACM Press New York

Lanza M Marinescu R (2006) Object-oriented metrics in practice Springer BerlinMantyla M (2003) Bad smells in softwaremdasha taxonomy and an empirical study PhD thesis Helsinki

University of TechnologyMarinescu R (2004) Detection strategies metrics-based rules for detecting design flaws In Proceed-

ings of the 20th international conference on software maintenance IEEE Computer SocietyPress Piscataway pp 350ndash359 (2004)

Moha N (2008) DECOR deacutetection et correction des deacutefauts dans les systegravemes orienteacutes objet PhDthesis Universiteacute de Montreacuteal et Universiteacute de Lille

Moha N Gueacuteheacuteneuc Y-G Meur A-FL Duchien L (2008a) A domain analysis to specify designdefects and generate detection algorithms In Proceedings of the 11th international conferenceon fundamental approaches to software engineering Springer New York pp 276ndash291

Moha N Hacene AMR Valtchev P Gueacuteheacuteneuc Y-G (2008b) Refactorings of design defects usingrelational concept analysis In Medina R Obiedkov S (eds) Proceedings of the 4th internationalconference on formal concept analysis (ICFCA) Springer New York

Moha N Gueacuteheacuteneuc YG Duchien L Le Meur AF (2010) DECOR a method for the specificationand detection of code and design smells IEEE Trans Software Eng 36(1)20ndash36

Munro MJ (2005) Product metrics for automatic identification of ldquobad smellrdquo design problems injava source-code In Proceedings of the 11th international software metrics symposium IEEEComputer Society Press Piscataway

Olbrich S Cruzes DS Basili V Zazworka N (2009) The evolution and impact of code smells acase study of two open source systems In Third international symposium on empirical softwareengineering and measurement

Oliveto R Khomh F Antoniol G Gueacuteheacuteneuc Y-G (2010) Numerical signatures of antipatternsan approach based on b-splines In Capilla R Ferenc R Dueas JC (eds) Proceedings of the14th conference on software maintenance and reengineering IEEE Computer Society PressPiscataway

Riel AJ (1996) Object-oriented design heuristics Addison-Wesley ReadingSheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures 4th edn

Chapman amp Hall LondonSimon F Steinbruumlckner F Lewerentz C (2001) Metrics based refactoring In Proceedings of the fifth

European conference on software maintenance and reengineering (CSMRrsquo01) IEEE ComputerSociety Press Piscataway p 30

Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designsusing reading techniques to increase software quality In Proceedings of the 14th conferenceon object-oriented programming systems languages and applications ACM Press New Yorkpp 47ndash56

van Emden E Moonen L (2002) Java quality assurance by detecting code smells In Proceedings ofthe 9th working conference on reverse engineering (WCRErsquo02) IEEE Computer Society PressPiscataway

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 31: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Vicinanza S Mukhopadhyay T Prietula M (1991) Software-effort estimation an exploratory studyof expert performance Inf Syst Res 2(4)243ndash262

Vokaacutec M (2004) Defect frequency and design patterns an empirical study of industrial code IEEETrans Software Eng 30(12)904ndash917

Wake WC (2003) Refactoring workbook Addison-Wesley Longman BostonWebster BF (1995) Pitfalls of object oriented development 1st edn M amp T Books Redwood CityWei L Shatnawi R (2007) An empirical study of the bad smells and class error probability in the

post-release object-oriented system evolution J Syst Softw 80(7)1120ndash1128Yin RK (2002) Case study research design and methods 3rd edn SAGE London (2002)Zimmermann T Weisgerber P Diehl S Zeller A (2004) Mining version histories to guide software

changes In Proceedings of the 26th international conference on software engineering IEEEComputer Society Press Piscataway pp 563ndash572

Zimmermann T Premraj R Zeller A (2007) Predicting defects for Eclipse In Proceedings of the3rd ICSE international workshop on predictor models in software engineering IEEE ComputerSociety Press Piscataway

Foutse Khomh is a research fellow at the Department of Electrical and Computer Engineering ofQueenrsquos University (Canada) In 2010 he received a PhD in computer science from the University ofMontreal (Canada) under the supervision of Yann-Gaeumll Gueacuteheacuteneuc The primary focus of his PhDthesis was to develop techniques and tools to assess the quality of the design and implementationof large software systems and to ensure the traceability of design choices during evolution Thefinal result of his thesis was a method to build quality models that take into account the qualityof the design of large software systems and thus that provide both a more detailed and high-levelview on quality The quality models developed in his thesis are implemented and available online inthe portal SQUANER He also holds a masterrsquos degree in software engineering from the NationalAdvanced School of Engineering (Cameroon) and a DEA (masterrsquos degree) in Mathematicsfrom the University of Yaounde I (Cameroon) He has published several papers in internationalconferences and journals He is a member of IEEE and IEEE Computer Society

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 32: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

Massimiliano Di Penta is assistant professor at the University of Sannio Department of EngineeringItaly He received his laurea degree in computer engineering in 1999 and his PhD in computerengineering in 2003 His research interests include software maintenance and evolution reverse engi-neering empirical software engineering search-based software engineering service-centric softwareengineering He is author of over 130 papers appeared on journals conferences and workshops Heserves and has served in the organizing and program committees of several conferences such as ICSEASE ICSM ICPC CSMR GECCO MSR SCAM WCRE and many others He has been generalchair of SCAM 2010 SSBSE 2010 WSE 2008 general co-chair of WCRE 2008 and program co-chair of SSBSE 2009 WCRE 2006 and 2007 IWPSE 2007 WSE 2007 SCAM 2006 STEP 2005 andof other workshops He is steering committee member of ICPC SCAM CSMR WCRE IWPSEand SSBSE He is in the editorial board of the Empirical Software Engineering Journal edited bySpringer and of the Journal of Software Maintenance and Evolution Research and Practice editedby Wiley

Yann-Gaeumll Gueacuteheacuteneuc is associate professor at the Department of Computing and SoftwareEngineering of Ecole Polytechnique of Montreal where he leads the Ptidej team on evaluatingand enhancing the quality of object-oriented programs by promoting the use of patterns at thelanguage- design- or architectural-levels In 2009 he was awarded the NSERC Research ChairTier II on Software Patterns and Patterns of Software He holds a PhD in software engineeringfrom University of Nantes France (under Professor Pierre Cointersquos supervision) since 2003 and anEngineering Diploma from Eacutecole des Mines of Nantes since 1998 His PhD thesis was fundedby Object Technology International Inc (now IBM OTI Labs) where he worked in 1999 and

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice

Page 33: An exploratory study of the impact of antipatterns on class change

Empir Software Eng

2000 His research interests are program understanding and program quality during developmentand maintenance in particular through the use and the identification of recurring patterns He wasthe first to use explanation-based constraint programming in the context of software engineeringto identify occurrences of patterns He is interested also in empirical software engineering he useseye-trackers to understand and to develop theories about program comprehension He has publishedmany papers in international conferences and journals He is IEEE Senior Member since 2010

Giuliano Antoniol (Giulio) received his laurea degree in electronic engineering from the Universitarsquodi Padova Italy in 1982 In 2004 he received his PhD in electrical engineering at the EcolePolytechnique de Montreal He worked in companies research institutions and universities In 2005he was awarded the Canada Research Chair Tier I in Software Change and Evolution

He have participated in the program and organization committees of numerous IEEE-sponsoredinternational conferences He served as program chair industrial chair tutorial and general chair ofinternational conferences and workshops He is a member of the editorial boards of four journalsthe Journal of Software Testing Verification amp Reliability the Journal of Information and SoftwareTechnology the Journal of Empirical Software Engineering and the Software Quality Journal

Dr Giuliano Antoniol served as deputy chair of the Steering Committee for the IEEE Interna-tional Conference on Software Maintenance He contributed to the program committees of morethan 30 IEEE and ACM conferences and workshops and he acts as referee for all major softwareengineering journals

He is currently full professor at the Ecole Polytechnique de Montreal where he works in the areaof software evolution software traceability search based software engineering software testing andsoftware maintenance

  • An exploratory study of the impact of antipatterns on class change- and fault-proneness
    • Abstract
      • Context and Problem
      • Study Definition and Design
        • Research Questions
        • Independent Variables
        • Dependent Variables
        • Analysis Method
          • Study Results
            • RQ1 What is the Relation between Antipatterns and Change-proneness
            • RQ2 What is the Relation between Kinds of Antipatterns and Change-proneness
            • RQ3 What is the Relation between Antipatterns and Fault-proneness
            • RQ4 What is the Relation between Particular Kinds of Antipatterns and Fault-proneness
            • RQ5 Do the Presence of Antipatterns in Classes Relate to the Sizes of These Classes
            • RQ6 What Kind of Changes are Performed on Classes Participating or Not in Antipatterns
              • Discussion
                • Correlations Among Antipatterns
                • Statistical SignificanceUnexpected Ratios
                • ChangesFaults Odds Ratios
                • Kinds of Antipatterns and ChangesFaults
                  • Threats to Validity
                  • Related Work
                  • Conclusions and Future Work
                  • References
                    • ltlt ASCII85EncodePages false AllowTransparency false AutoPositionEPSFiles true AutoRotatePages None Binding Left CalGrayProfile (Gray Gamma 22) CalRGBProfile (sRGB IEC61966-21) CalCMYKProfile (ISO Coated v2 300 050ECI051) sRGBProfile (sRGB IEC61966-21) CannotEmbedFontPolicy Error CompatibilityLevel 13 CompressObjects Off CompressPages true ConvertImagesToIndexed true PassThroughJPEGImages true CreateJobTicket false DefaultRenderingIntent Perceptual DetectBlends true DetectCurves 01000 ColorConversionStrategy sRGB DoThumbnails true EmbedAllFonts true EmbedOpenType false ParseICCProfilesInComments true EmbedJobOptions true DSCReportingLevel 0 EmitDSCWarnings false EndPage -1 ImageMemory 1048576 LockDistillerParams true MaxSubsetPct 100 Optimize true OPM 1 ParseDSCComments true ParseDSCCommentsForDocInfo true PreserveCopyPage true PreserveDICMYKValues true PreserveEPSInfo true PreserveFlatness true PreserveHalftoneInfo false PreserveOPIComments false PreserveOverprintSettings true StartPage 1 SubsetFonts false TransferFunctionInfo Apply UCRandBGInfo Preserve UsePrologue false ColorSettingsFile () AlwaysEmbed [ true ] NeverEmbed [ true ] AntiAliasColorImages false CropColorImages true ColorImageMinResolution 150 ColorImageMinResolutionPolicy OK DownsampleColorImages true ColorImageDownsampleType Bicubic ColorImageResolution 150 ColorImageDepth -1 ColorImageMinDownsampleDepth 1 ColorImageDownsampleThreshold 150000 EncodeColorImages true ColorImageFilter DCTEncode AutoFilterColorImages true ColorImageAutoFilterStrategy JPEG ColorACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt ColorImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000ColorACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000ColorImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasGrayImages false CropGrayImages true GrayImageMinResolution 150 GrayImageMinResolutionPolicy OK DownsampleGrayImages true GrayImageDownsampleType Bicubic GrayImageResolution 150 GrayImageDepth -1 GrayImageMinDownsampleDepth 2 GrayImageDownsampleThreshold 150000 EncodeGrayImages true GrayImageFilter DCTEncode AutoFilterGrayImages true GrayImageAutoFilterStrategy JPEG GrayACSImageDict ltlt QFactor 040 HSamples [1 1 1 1] VSamples [1 1 1 1] gtgt GrayImageDict ltlt QFactor 076 HSamples [2 1 1 2] VSamples [2 1 1 2] gtgt JPEG2000GrayACSImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt JPEG2000GrayImageDict ltlt TileWidth 256 TileHeight 256 Quality 15 gtgt AntiAliasMonoImages false CropMonoImages true MonoImageMinResolution 1200 MonoImageMinResolutionPolicy OK DownsampleMonoImages true MonoImageDownsampleType Bicubic MonoImageResolution 600 MonoImageDepth -1 MonoImageDownsampleThreshold 150000 EncodeMonoImages true MonoImageFilter CCITTFaxEncode MonoImageDict ltlt K -1 gtgt AllowPSXObjects false CheckCompliance [ None ] PDFX1aCheck false PDFX3Check false PDFXCompliantPDFOnly false PDFXNoTrimBoxError true PDFXTrimBoxToMediaBoxOffset [ 000000 000000 000000 000000 ] PDFXSetBleedBoxToMediaBox true PDFXBleedBoxToTrimBoxOffset [ 000000 000000 000000 000000 ] PDFXOutputIntentProfile (None) PDFXOutputConditionIdentifier () PDFXOutputCondition () PDFXRegistryName () PDFXTrapped False CreateJDFFile false Description ltlt ARA ltFEFF0633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F006200650020005000440046002006450646062706330628062900200644063906310636002006480637062806270639062900200648062B06270626064200200627064406230639064506270644002E00200020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644062A064A0020062A0645002006250646063406270626064706270020062806270633062A062E062F062706450020004100630072006F00620061007400200648002000410064006F00620065002000520065006100640065007200200036002E00300020064806450627002006280639062F0647002Egt BGR ltFEFF04180437043F043E043B043704320430043904420435002004420435043704380020043D0430044104420440043E0439043A0438002C00200437043000200434043000200441044A0437043404300432043004420435002000410064006F00620065002000500044004600200434043E043A0443043C0435043D04420438002C0020043F043E04340445043E0434044F044904380020043704300020043D04300434043504360434043D043E00200440043004370433043B0435043604340430043D0435002004380020043F04350447043004420430043D04350020043D04300020043104380437043D0435044100200434043E043A0443043C0435043D04420438002E00200421044A04370434043004340435043D043804420435002000500044004600200434043E043A0443043C0435043D044204380020043C043E0433043004420020043404300020044104350020043E0442043204300440044F0442002004410020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E0030002004380020043F043E002D043D043E043204380020043204350440044104380438002Egt CHS ltFEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e55464e1a65876863768467e5770b548c62535370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002gt CHT ltFEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc666e901a554652d965874ef6768467e5770b548c52175370300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200036002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002gt CZE ltFEFF0054006f0074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002000760068006f0064006e00fd006300680020006b0065002000730070006f006c00650068006c0069007600e9006d0075002000700072006f0068006c00ed017e0065006e00ed002000610020007400690073006b00750020006f006200630068006f0064006e00ed0063006800200064006f006b0075006d0065006e0074016f002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e0074007900200050004400460020006c007a00650020006f007400650076015900ed007400200076002000610070006c0069006b0061006300ed006300680020004100630072006f006200610074002000610020004100630072006f006200610074002000520065006100640065007200200036002e0030002000610020006e006f0076011b006a016100ed00630068002egt DAN ltFEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000650067006e006500720020007300690067002000740069006c00200064006500740061006c006a006500720065007400200073006b00e60072006d007600690073006e0069006e00670020006f00670020007500640073006b007200690076006e0069006e006700200061006600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200036002e00300020006f00670020006e0079006500720065002egt DEU ltFEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200075006d002000650069006e00650020007a0075007600650072006c00e40073007300690067006500200041006e007a006500690067006500200075006e00640020004100750073006700610062006500200076006f006e00200047006500730063006800e40066007400730064006f006b0075006d0065006e00740065006e0020007a0075002000650072007a00690065006c0065006e002e00200044006900650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000520065006100640065007200200036002e003000200075006e00640020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002egt ESP ltFEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f0073002000640065002000410064006f00620065002000500044004600200061006400650063007500610064006f007300200070006100720061002000760069007300750061006c0069007a00610063006900f3006e0020006500200069006d0070007200650073006900f3006e00200064006500200063006f006e006600690061006e007a006100200064006500200064006f00630075006d0065006e0074006f007300200063006f006d00650072006300690061006c00650073002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200036002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002egt ETI ltFEFF004b00610073007500740061006700650020006e0065006900640020007300e400740074006500690064002c0020006500740020006c0075007500610020005000440046002d0064006f006b0075006d0065006e00740065002c0020006d0069007300200073006f00620069007600610064002000e4007200690064006f006b0075006d0065006e00740069006400650020007500730061006c006400750073007600e400e4007200730065006b0073002000760061006100740061006d006900730065006b00730020006a00610020007000720069006e00740069006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e0074006500200073006100610062002000610076006100640061002000760061006900640020004100630072006f0062006100740020006a0061002000410064006f00620065002000520065006100640065007200200036002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002egt FRA ltFEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f006200650020005000440046002000700072006f00660065007300730069006f006e006e0065006c007300200066006900610062006c0065007300200070006f007500720020006c0061002000760069007300750061006c00690073006100740069006f006e0020006500740020006c00270069006d007000720065007300730069006f006e002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200036002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002egt GRE ltFEFF03A703C103B703C303B903BC03BF03C003BF03B903AE03C303C403B5002003B103C503C403AD03C2002003C403B903C2002003C103C503B803BC03AF03C303B503B903C2002003B303B903B1002003BD03B1002003B403B703BC03B903BF03C503C103B303AE03C303B503C403B5002003AD03B303B303C103B103C603B1002000410064006F006200650020005000440046002003BA03B103C403AC03BB03BB03B703BB03B1002003B303B903B1002003B103BE03B903CC03C003B903C303C403B7002003C003C103BF03B203BF03BB03AE002003BA03B103B9002003B503BA03C403CD03C003C903C303B7002003B503C003B103B303B303B503BB03BC03B103C403B903BA03CE03BD002003B503B303B303C103AC03C603C903BD002E0020002003A403B1002003AD03B303B303C103B103C603B10020005000440046002003C003BF03C5002003B803B1002003B403B703BC03B903BF03C503C103B303B703B803BF03CD03BD002003B103BD03BF03AF03B303BF03C503BD002003BC03B50020004100630072006F006200610074002003BA03B103B9002000410064006F00620065002000520065006100640065007200200036002E0030002003BA03B103B9002003BD03B503CC03C403B503C103B503C2002003B503BA03B403CC03C303B503B903C2002Egt HEB ltFEFF05D405E905EA05DE05E905D5002005D105E705D105D905E205D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05EA05D005D905DE05D905DD002005DC05EA05E605D505D205D4002005D505DC05D405D305E405E105D4002005D005DE05D905E005D505EA002005E905DC002005DE05E105DE05DB05D905DD002005E205E105E705D905D905DD002E0020002005E005D905EA05DF002005DC05E405EA05D505D7002005E705D505D105E605D90020005000440046002005D1002D0020004100630072006F006200610074002005D505D1002D002000410064006F006200650020005200650061006400650072002005DE05D205E805E105D400200036002E0030002005D505DE05E205DC05D4002Egt HRV ltFEFF004F0076006500200070006F0073007400610076006B00650020006B006F00720069007300740069007400650020006B0061006B006F0020006200690073007400650020007300740076006F00720069006C0069002000410064006F00620065002000500044004600200064006F006B0075006D0065006E007400650020006B006F006A00690020007300750020007000720069006B006C00610064006E00690020007A006100200070006F0075007A00640061006E00200070007200650067006C006500640020006900200069007300700069007300200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E006100740061002E0020005300740076006F00720065006E0069002000500044004600200064006F006B0075006D0065006E007400690020006D006F006700750020007300650020006F00740076006F007200690074006900200075002000700072006F006700720061006D0069006D00610020004100630072006F00620061007400200069002000410064006F00620065002000520065006100640065007200200036002E0030002000690020006E006F00760069006A0069006D0020007600650072007A0069006A0061006D0061002Egt HUN ltFEFF0045007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c002000fc007a006c00650074006900200064006f006b0075006d0065006e00740075006d006f006b0020006d00650067006200ed007a00680061007400f30020006d00650067006a0065006c0065006e00ed007400e9007300e900720065002000e900730020006e0079006f006d00740061007400e1007300e10072006100200061006c006b0061006c006d00610073002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b006100740020006b00e90073007a00ed0074006800650074002e002000200041007a002000ed006700790020006c00e90074007200650068006f007a006f007400740020005000440046002d0064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200036002c0030002d0073002000e900730020006b00e9007301510062006200690020007600650072007a006900f3006900760061006c0020006e00790069007400680061007400f3006b0020006d00650067002egt ITA (Utilizzare queste impostazioni per creare documenti Adobe PDF adatti per visualizzare e stampare documenti aziendali in modo affidabile I documenti PDF creati possono essere aperti con Acrobat e Adobe Reader 60 e versioni successive) JPN ltFEFF30d330b830cd30b9658766f8306e8868793a304a3088307353705237306b90693057305f002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200036002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a3067306f30d530a930f330c8306e57cb30818fbc307f3092884c3044307e30593002gt KOR ltFEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020be44c988b2c8c2a40020bb38c11cb97c0020c548c815c801c73cb85c0020bcf4ace00020c778c1c4d558b2940020b3700020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200036002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002egt LTH ltFEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d0069002000730075006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c002000740069006e006b0061006d0075007300200076006500720073006c006f00200064006f006b0075006d0065006e00740061006d00730020006b006f006b0079006200690161006b006100690020007000650072017e0069016b007201170074006900200069007200200073007000610075007300640069006e00740069002e002000530075006b00750072007400750073002000500044004600200064006f006b0075006d0065006e007400750073002000670061006c0069006d006100200061007400690064006100720079007400690020007300750020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200036002e00300020006200650069002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002egt LVI ltFEFF004c006900650074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200069007a0076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020007000690065006d01130072006f00740069002000640072006f01610061006900200075007a01460113006d0075006d006100200064006f006b0075006d0065006e0074007500200073006b00610074012b01610061006e0061006900200075006e0020006400720075006b010101610061006e00610069002e00200049007a0076006500690064006f0074006f0073002000500044004600200064006f006b0075006d0065006e00740075007300200076006100720020006100740076011300720074002c00200069007a006d0061006e0074006f006a006f0074002000700072006f006700720061006d006d00750020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200036002e003000200076006100690020006a00610075006e0101006b0075002000760065007200730069006a0075002egt NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken waarmee zakelijke documenten betrouwbaar kunnen worden weergegeven en afgedrukt De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 60 en hoger) NOR ltFEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d002000650072002000650067006e0065007400200066006f00720020007000e5006c006900740065006c006900670020007600690073006e0069006e00670020006f00670020007500740073006b007200690066007400200061007600200066006f0072007200650074006e0069006e006700730064006f006b0075006d0065006e007400650072002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200036002e003000200065006c006c00650072002egt POL ltFEFF004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002e004b006f0072007a0079007300740061006a010500630020007a00200074007900630068002000750073007400610077006900650144002c0020006d006f017c006e0061002000740077006f0072007a0079010700200064006f006b0075006d0065006e00740079002000410064006f00620065002000500044004600200070006f007a00770061006c0061006a01050063006500200077002000730070006f007300f300620020006e00690065007a00610077006f0064006e0079002000770079015b0077006900650074006c00610107002000690020006400720075006b006f00770061010700200064006f006b0075006d0065006e007400790020006600690072006d006f00770065002e00200020005500740077006f0072007a006f006e006500200064006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d0061006300680020004100630072006f00620061007400200069002000410064006f0062006500200052006500610064006500720020007700200077006500720073006a006900200036002e00300020006f00720061007a002000770020006e006f00770073007a00790063006800200077006500720073006a00610063006800200074007900630068002000700072006f006700720061006d00f30077002egt PTB ltFEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f00620065002000500044004600200061006400650071007500610064006f00730020007000610072006100200061002000760069007300750061006c0069007a006100e700e3006f002000650020006100200069006d0070007200650073007300e3006f00200063006f006e0066006900e1007600650069007300200064006500200064006f00630075006d0065006e0074006f007300200063006f006d0065007200630069006100690073002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200036002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002egt RUM ltFEFF005500740069006C0069007A00610163006900200061006300650073007400650020007300650074010300720069002000700065006E007400720075002000610020006300720065006100200064006F00630075006D0065006E00740065002000410064006F006200650020005000440046002000610064006500630076006100740065002000700065006E007400720075002000760069007A00750061006C0069007A006100720065002000640065002000EE006E00630072006500640065007200650020015F0069002000700065006E00740072007500200069006D007000720069006D006100720065006100200064006F00630075006D0065006E00740065006C006F007200200064006500200061006600610063006500720069002E00200044006F00630075006D0065006E00740065006C00650020005000440046002000630072006500610074006500200070006F00740020006600690020006400650073006300680069007300650020006300750020004100630072006F0062006100740020015F0069002000410064006F00620065002000520065006100640065007200200036002E003000200073006100750020007600650072007300690075006E006900200075006C0074006500720069006F006100720065002Egt RUS ltFEFF04180441043F043E043B044C043704430439044204350020044D044204380020043F043004400430043C043504420440044B0020043F0440043800200441043E043704340430043D0438043800200434043E043A0443043C0435043D0442043E0432002000410064006F006200650020005000440046002C0020043F043E04340445043E0434044F04490438044500200434043B044F0020043D0430043404350436043D043E0433043E0020043F0440043E0441043C043E044204400430002004380020043F043504470430044204380020043104380437043D04350441002D0434043E043A0443043C0435043D0442043E0432002E00200421043E043704340430043D043D044B043500200434043E043A0443043C0435043D0442044B00200050004400460020043C043E0436043D043E0020043E0442043A0440044B0442044C002C002004380441043F043E043B044C04370443044F0020004100630072006F00620061007400200438002000410064006F00620065002000520065006100640065007200200036002E00300020043B04380431043E00200438044500200431043E043B043504350020043F043E04370434043D043804350020043204350440044104380438002Egt SKY ltFEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200073006c00fa017e006900610020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f007600200076006f00200066006f0072006d00e100740065002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300fa002000760068006f0064006e00e90020006e0061002000730070006f013e00610068006c0069007600e90020007a006f006200720061007a006f00760061006e006900650020006100200074006c0061010d0020006f006200630068006f0064006e00fd0063006800200064006f006b0075006d0065006e0074006f0076002e002000200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e0074007900200076006f00200066006f0072006d00e10074006500200050004400460020006a00650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d00650020004100630072006f0062006100740020006100200076002000700072006f006700720061006d0065002000410064006f006200650020005200650061006400650072002c0020007600650072007a0069006900200036002e003000200061006c00650062006f0020006e006f007601610065006a002egt SLV ltFEFF005400650020006E006100730074006100760069007400760065002000750070006F0072006100620069007400650020007A00610020007500730074007600610072006A0061006E006A006500200064006F006B0075006D0065006E0074006F0076002000410064006F006200650020005000440046002C0020007000720069006D00650072006E006900680020007A00610020007A0061006E00650073006C006A006900760020006F0067006C0065006400200069006E0020007400690073006B0061006E006A006500200070006F0073006C006F0076006E0069006800200064006F006B0075006D0065006E0074006F0076002E0020005500730074007600610072006A0065006E006500200064006F006B0075006D0065006E0074006500200050004400460020006A00650020006D006F0067006F010D00650020006F00640070007200650074006900200073002000700072006F006700720061006D006F006D00610020004100630072006F00620061007400200069006E002000410064006F00620065002000520065006100640065007200200036002E003000200074006500720020006E006F00760065006A01610069006D0069002Egt SUO ltFEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f0074002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002c0020006a006f0074006b006100200073006f0070006900760061007400200079007200690074007900730061007300690061006b00690072006a006f006a0065006e0020006c0075006f00740065007400740061007600610061006e0020006e00e400790074007400e4006d0069007300650065006e0020006a0061002000740075006c006f007300740061006d0069007300650065006e002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200036002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002egt SVE ltFEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d00200070006100730073006100720020006600f60072002000740069006c006c006600f60072006c00690074006c006900670020007600690073006e0069006e00670020006f006300680020007500740073006b007200690066007400650072002000610076002000610066006600e4007200730064006f006b0075006d0065006e0074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200036002e00300020006f00630068002000730065006e006100720065002egt TUR ltFEFF0130015f006c006500200069006c00670069006c0069002000620065006c00670065006c006500720069006e0020006700fc00760065006e0069006c0069007200200062006900e70069006d006400650020006700f6007200fc006e007400fc006c0065006e006d006500730069006e0065002000760065002000790061007a0064013100720131006c006d006100730131006e006100200075007900670075006e002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e0020004f006c0075015f0074007500720075006c0061006e002000500044004600200064006f007300790061006c0061007201310020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200036002e003000200076006500200073006f006e00720061006b00690020007300fc007200fc006d006c0065007200690079006c00650020006100e70131006c006100620069006c00690072002egt UKR ltFEFF04120438043A043E0440043804410442043E043204430439044204350020044604560020043F043004400430043C043504420440043800200434043B044F0020044104420432043E04400435043D043D044F00200434043E043A0443043C0435043D044204560432002000410064006F006200650020005000440046002C0020043F044004380437043D043004470435043D0438044500200434043B044F0020043D0430043404560439043D043E0433043E0020043F0435044004350433043B044F04340443002004560020043404400443043A0443002004340456043B043E04320438044500200434043E043A0443043C0435043D044204560432002E0020042104420432043E04400435043D04560020005000440046002D0434043E043A0443043C0435043D044204380020043C043E0436043D04300020043204560434043A04400438043204300442043800200437043000200434043E043F043E043C043E0433043E044E0020043F0440043E043304400430043C04380020004100630072006F00620061007400200456002000410064006F00620065002000520065006100640065007200200036002E00300020044204300020043F04560437043D04560448043804450020043204350440044104560439002Egt ENU ltFEFF004a006f0062006f007000740069006f006e007300200066006f00720020004100630072006f006200610074002000440069007300740069006c006c0065007200200039002000280039002e0033002e00310029002e000d00500072006f006400750063006500730020005000440046002000660069006c0065007300200077006800690063006800200061007200650020007500730065006400200066006f00720020006f006e006c0069006e0065002e000d0028006300290020003200300031003000200053007000720069006e006700650072002d005600650072006c0061006700200047006d006200480020gt gtgtgtgt setdistillerparamsltlt HWResolution [2400 2400] PageSize [595276 841890]gtgt setpagedevice