SlideShare a Scribd company logo
1 of 48
Download to read offline
Nicolas Bettenburg         Walid Ibrahim       Ahmed E. Hassan
Weyi Shang                 Bram Adams          Ying Zou

   An Empirical Study on
   Inconsistent Changes to Code Clones
                                           at Release Level
2




Code Clones: Recent Research in the Field
2




      Code Clones: Recent Research in the Field
                 “Cloning Considered Harmful” Considered Harmful

                               Cory Kapser and Michael W. Godfrey                                                           Cloning as
                               Software Architecture Group (SWAG)                                                         Engineering Tool
               David R. Cheriton School of Computer Science, University of Waterloo
                                 {cjkapser, migod}@uwaterloo.ca


                    Abstract                                 clones pose additional problems if they do not evolve
                                                             synchronously. With this in mind, methods for automatic
urrent literature on the topic of duplicated (cloned)        refactoring have been suggested [4, 7], and tools specifically
  in software systems often considers duplication            to aid developers in the manual refactoring of clones have
 ful to the system quality and the reasons commonly          also been developed [19].
   for duplicating code often have a negative                    There is no doubt that code cloning is often an indication
otation.      While these positions are sometimes            of sloppy design and in such cases should be considered to
 ct, during our case studies we have found that this is      be a kind of development “bad smell”. However, we have
 niversally true, and we have found several situations       found that there are many instances where this is simply not
e code duplication seems to be a reasonable or               the case. For example, cloning may be used to introduce
 beneficial design option. For example, a method of           experimental optimizations to core subsystems without
ducing experimental changes to core subsystems is to         negatively effecting the stability of the main code. Thus,
cate the subsystem and introduce changes there in a          a variety of concerns such as stability, code ownership, and
 of sandbox testbed. As features mature and become           design clarity need to be considered before any refactoring
e within the experimental subsystem, they can then           is attempted; a manager should try to understand the reason
troduced gradually into the stable code base. In this        behind the duplication before deciding what action (if any)
risk of introducing instabilities in the stable version is   to take. 1
mized. This paper describes several patterns of cloning          This paper introduces eight cloning patterns that we have
we have encountered in our case studies and discusses        uncovered during case studies on large software systems,
2




     Code Clones: Recent Research in the Field
               “Cloning Considered Harmful” Considered Harmful

                             Cory Kapser and Michael W. Godfrey                                               Cloning as
                             Software Architecture Group (SWAG)                                             Engineering Tool
             David R. Cheriton School of Computer Science, University of Waterloo
                               {cjkapser, migod}@uwaterloo.ca


                 Abstract          Do Code Clones Matter?
                                               clones pose additional                  problems if they do not evolve
                                                          synchronously. With this in mind, methods for automatic
urrent literature on the topic of duplicated (cloned)     refactoring have been suggested [4, 7], and tools specifically
   in software systems often considers Deissenboeck, to aid developers in the Stefan refactoring of clones have
               Elmar Juergens, Florian duplication         Benjamin Hummel, manual Wagner                             Inconsistent Clones
                          Institut f¨ r Informatik, Technischebeen developedM¨ nchen
 ful to the system quality and theureasons commonly       also Universit¨ t [19].
                                                                              a u                                       Single Snapshots
    for duplicating code often have 3, 85748 Garching b. M¨ nchen, Germany
                         Boltzmannstr.      a negative        There is no doubt that code cloning is often an indication
                                                                      u
otation.      While these positions are sometimes         of sloppy design and in such cases should be considered to
                            {juergens,deissenb,hummelb,wagnerst}@in.tum.de
 ct, during our case studies we have found that this is   be a kind of development “bad smell”. However, we have
 niversally true, and we have found several situations    found that there are many instances where this is simply not
e code duplication seems to be a reasonable or            the case. For example, cloning may be used to introduce
                     Abstract
  beneficial design option. For example, a method of       experimental optimizations tofixed insubsystems without
                                                           found in cloned code but not core all clone instances,
ducing experimental changes to core subsystems is to      negatively effecting the still exhibit the incorrect behavior.
                                                           the system is likely to stability of the main code. Thus,
 cate the subsystem and introduce changes there in a
  ode cloning is not only assumed to inflate mainte-       a variety of concerns such as stability, codewhere a missing
                                                           To illustrate this, Fig. 1 shows an example, ownership, and
ce costs but also considered defect-prone asand become
 of sandbox testbed. As features mature inconsistent       null-check was retrofitted in only one clone instance.
                                                          design clarity need to be considered before any refactoring
nges to code duplicates can lead to unexpected can then
e within the experimental subsystem, they behavior.       is attempted; apresents the results of a understand case study
                                                              This paper manager should try to large-scale the reason
sequently,gradually into the of duplicated code, clone
 troduced the identification stable code base. In this     behind the duplication before deciding whatare changed in-
                                                           that was undertaken to find out (1) if clones action (if any)
risk of has been a very active area theresearch in recent
ction, introducing instabilities in of stable version is  to take. 1
                                                           consistently, (2) if these inconsistencies are introduced in-
mized. This paper describes substantial investigation of
 s. Up to now, however, no several patterns of cloning     tentionally and, (3) if unintentional inconsistencies we have
                                                              This paper introduces eight cloning patterns that can rep-
consequences of code cloning on program correctness
we have encountered in our case studies and discusses     uncovered during case studies we analyzed three commer-
                                                           resent faults. In this case study on large software systems,
2




     Code Clones: Recent Research in the Field
               “Cloning Considered Harmful” Considered Harmful

                             Cory Kapser and Michael W. Godfrey                                                Cloning as
                             Software Architecture Group (SWAG)                                              Engineering Tool
             David R. Cheriton School of Computer Science, University of Waterloo
                               {cjkapser, migod}@uwaterloo.ca


                 Abstract          Do Code Clones Matter?
                                               clones pose additional                   problems if they do not evolve
                                                           synchronously. With this in mind, methods for automatic
urrent literature on the topic of duplicated (cloned)      refactoring have been suggested [4, 7], and tools specifically
   in software systems often considers Deissenboeck, to aid developers in the Stefan refactoring of clones have
               Elmar Juergens, Florian duplication          Benjamin Hummel, manual Wagner                             Inconsistent Clones
                          Institut f¨ r Informatik, Technischebeen developedM¨ nchen
 ful to the system quality and theureasons commonly        also Universit¨ t [19].
                                                                               a u                                       Single Snapshots
    for duplicating code often have 3, 85748 Garching b. M¨ nchen, Germany
                         Boltzmannstr.      a negative         There is no doubt that code cloning is often an indication
                                                                       u
otation.      While these positions are sometimes          of sloppy design and in such cases should be considered to
                            {juergens,deissenb,hummelb,wagnerst}@in.tum.de
 ct, during our case studies we have found that this is    be a kind of development “bad smell”. However, we have
 niversally true, and we have found several situations     found that there are many instances where this is simply not
e code duplication seems to be a reasonable or             the case. For example, cloning may be used to introduce
                     Abstract
  beneficial design option. For example, a method of        experimental optimizations tofixed insubsystems without
                                                            found in cloned code but not core all clone instances,
      A Study of Consistent and Inconsistent Changesthe still exhibit Clones code. Thus,
ducing experimental changes to core subsystems is to        the system is likely to Code the main
                                                           negatively effecting to stability of the incorrect behavior.
 cate the subsystem and introduce changes there in a
  ode cloning is not only assumed to inflate mainte-        a variety of concerns such as stability, codewhere a missing
                                                            To illustrate this, Fig. 1 shows an example, ownership, and
ce costs but also considered defect-prone asand become
 of sandbox testbed. As features mature inconsistent        null-check was retrofitted in only one clone instance. Inconsistent Clones
                                                           design clarity need to be considered before any refactoring
nges to code duplicates can lead to unexpected can thenKrinke This paperapresents the results of a understand case study
                                                  Jens
e within the experimental subsystem, they behavior.        is attempted; manager should try to large-scale the reason
sequently,gradually into the of duplicated code, clone Hagen, Germany to before deciding whatare changed in-
 troduced the identification stable code base. In at in
                                                     this  behind the duplication find out (1) if clones action (if any)
                                                            that was undertaken                                         Weekly Snapshots
                                   FernUniversit¨
risk of has been a very active area theresearch in recent
ction, introducing instabilities in of stable version is   to take. 1
                                                            consistently, (2) if these inconsistencies are introduced in-
                                               krinke@acm.org
                                                            tentionally and, (3) if unintentional inconsistencies we have
mized. This paper describes substantial investigation of
 s. Up to now, however, no several patterns of cloning         This paper introduces eight cloning patterns that can rep-
consequences of code cloning on program correctness
we have encountered in our case studies and discusses      uncovered during case studies we analyzed three commer-
                                                            resent faults. In this case study on large software systems,
3




Code Clones: Inconsistent Changes


 “During the evolution of a system, code clones
  should be changed consistently to prevent bugs.”
3




Code Clones: Inconsistent Changes


 “During the evolution of a system, code clones
  should be changed consistently to prevent bugs.”



                          Demonstrated to be
                          true at a micro-level!
4




 Revision Level vs. Release Level Analysis




r2014   ...   r2209   ...   r2351   ...   r2682   Revisions
4




 Revision Level vs. Release Level Analysis



  A




r2014   ...   r2209   ...   r2351   ...   r2682   Revisions
4




 Revision Level vs. Release Level Analysis



  A
                A




r2014   ...   r2209   ...   r2351   ...   r2682   Revisions
4




 Revision Level vs. Release Level Analysis



  A
                A




r2014   ...   r2209   ...   r2351   ...   r2682   Revisions
4




 Revision Level vs. Release Level Analysis



  A
                A




r2014   ...   r2209   ...   r2351   ...   r2682   Revisions
4




 Revision Level vs. Release Level Analysis



  A
                A




                                    ...                                                        Revisions
                                          Experimentation
r2014   ...   r2209   ...   r2351                                                      r2682




                                                                         Refactoring
                                                            Bug-Fixing
4




 Revision Level vs. Release Level Analysis

                                    Transient Effects
                                              Code Clones




                                    Amount
                                             Inconsistent Changes
  A
                A


                                                                                Time




                                       ...                                                         Revisions
                                              Experimentation
r2014   ...   r2209   ...   r2351                                                          r2682




                                                                             Refactoring
                                                                Bug-Fixing
4




 Revision Level vs. Release Level Analysis

                                       Transient Effects
                                                   Code Clones




                                       Amount
                                                  Inconsistent Changes
      A
                  A


                                                                                     Time




                                          ...                                                           Revisions
                                                   Experimentation
r2014     ...   r2209   ...    r2351                                                            r2682




                                                                                  Refactoring
                                                                     Bug-Fixing




2.1             2.2           2.3           2.4                                                 3.0     Releases
5




Study Design: Subject Systems


                        22 Releases over 1 year
                        51 Days / release
                        15k Lines of code




                        50 Releases over 4 years
                        36 Days / release
                        90k Lines of code
6




Study Design: Clone Detection & Tracking




   2.1   2.2    2.3   2.4       3.0   Releases
6




Study Design: Clone Detection & Tracking




                                      Clone
                                      Reports



   2.1   2.2    2.3   2.4       3.0   Releases
6




Study Design: Clone Detection & Tracking




                                      Clone Groups




                                      Clone
                                      Reports



   2.1   2.2    2.3   2.4       3.0   Releases
6




Study Design: Clone Detection & Tracking


                            Genealogies


                                                Clone Groups




                                                Clone
                                                Reports



   2.1   2.2    2.3   2.4                 3.0   Releases
7




Study Design: Inconsistent Changes




   Inconsistent Change   Consistent Change




   2.1   2.2       2.3    2.4         3.0
8




Research Questions


     What are the characteristics of long-lived clone
Q1   genealogies at release level?



     What is the effect of inconsistent changes on code
Q2   quality when measured at release level?



     What type of cloning patterns do we observe at release
Q3   level?
9




Research Questions


      What are the characteristics of long-lived
 Q1   clone genealogies at release level?


             Life-Time

                                             Group
                                             Size
Lifetime  of  Clone  Groups   10




                       50
                       20
Number  of  Releases

                       10
                       5
                       2
                       1




                            Apache  Mina
                            jEdit

                                              Number  of  Genealogies
Lifetime  of  Clone  Groups   10




                       50
                       20
Number  of  Releases

                       10
                       5
                       2
                       1




                            Apache  Mina
                            jEdit

                                              Number  of  Genealogies
Lifetime  of  Clone  Groups   10




                       50
                       20
Number  of  Releases

                       10
                       5
                       2
                       1




                            Apache  Mina
                            jEdit

                                              Number  of  Genealogies
Lifetime  of  Clone  Groups   10




                       50
                             Long-lived
                            clone groups
                       20
Number  of  Releases

                       10
                       5
                       2
                       1




                            Apache  Mina
                            jEdit

                                              Number  of  Genealogies
11
                                          Size  of  Clone  Groups


                     200
                     100
                     50
Number  of  Clones

                     20
                     10
                     5
                     2
                     1




                           Apache  Mina
                           jEdit

                                           Number  of  Genealogies
11
                                          Size  of  Clone  Groups


                     200
                     100
                     50
Number  of  Clones

                     20
                     10
                     5
                     2
                     1




                           Apache  Mina
                           jEdit

                                           Number  of  Genealogies
11
                                          Size  of  Clone  Groups


                     200


                                          Mostly small
                     100




                                          clone groups
                     50
Number  of  Clones

                     20
                     10
                     5
                     2
                     1




                           Apache  Mina
                           jEdit

                                           Number  of  Genealogies
12




Research Questions


          What is the effect of inconsistent changes on code
 Q2       quality when measured at release level?



    Inconsistent Change

                                       Reports

    2.1       2.2        2.3

                                                    Inspection
13




Research Question Q2

org.gjt.sp.jedit.jEdit.newView(View, Buffer)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
      // Don't show the welcome message if jEdit was started
      // with the -nosettings switch

                                                                jEdit
      if(settingsDirectory != null
         && getBooleanProperty("firstTime"))
        new HelpViewer("jeditresource:/doc/welcome.html");

                                                                4.0.2
  ...

org.gjt.sp.jedit.jEdit.newView(View, String)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
       // Don't show the welcome message if jEdit was started
       // with the -nosettings switch
       if(settingsDirectory != null
          && getBooleanProperty("firstTime"))
         new HelpViewer("jeditresource:/doc/welcome.html");
   ...
14




Research Question Q2

org.gjt.sp.jedit.jEdit.newView(View, Buffer)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
      // Don't show the welcome message if jEdit was started
      // with the -nosettings switch

                                                                   jEdit
      if(settingsDirectory != null
         && getBooleanProperty("firstTime"))
        new HelpViewer("jeditresource:/doc/welcome.html");

                                                                4.0.2 4.0.3
  ...

org.gjt.sp.jedit.jEdit.newView(View, String)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
       // Don't show the welcome message if jEdit was started
       // with the -nosettings switch
       if(settingsDirectory != null
          && getBooleanProperty("firstTime"))
         new HelpViewer("jeditresource:/doc/welcome.html");
   ...
15




Research Question Q2

org.gjt.sp.jedit.jEdit.newView(View, Buffer)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
      // Don't show the welcome message if jEdit was started
      // with the -nosettings switch

                                                                   jEdit
      if(settingsDirectory != null
         && getBooleanProperty("firstTime"))
        new HelpViewer();

                                                                4.0.3 4.0.4
  ...

org.gjt.sp.jedit.jEdit.newView(View, String)
{
  ...
    // show tip of the day
    if(newView == viewsFirst)
    {
       // Don't show the welcome message if jEdit was started
       // with the -nosettings switch
       if(settingsDirectory != null
          && getBooleanProperty("firstTime"))
         new HelpViewer("jeditresource:/doc/welcome.html");
   ...
16




Research Question Q2


  • 748 inconsistent changes flagged by our tool
  • Manual inspection of reports and source code
  • Only 7 inconsistent changes related to bugs
  • Inconsistent changes seem carried out on purpose.
16




Research Question Q2


  • 748 inconsistent changes flagged by our tool
  • Manual inspection of reports and source code
  • Only 7 inconsistent changes related to bugs
  • Inconsistent changes seem carried out on purpose.
                Only a fraction of
             inconsistent changes to
                long-lived clones
                 introduce bugs!
17




Research Questions


     What type of cloning patterns do we observe
Q3   at release level?


                                        Clone
                                       Patterns
                 Classification


                                        Clone
                                        Reports


     2.1   2.2    2.3    2.4     3.0     Releases
18




   Research Question Q3
#$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+
                            !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2
                    92):!;1$ 2<"2)#12.3$                                         72(8!91$
    jEdit              %'$       5'$
                                                  Mina                              %&$ 2:"2(#12-3$
                                                                                            ;&$



                                                                                       !"#$
                             !"#$                     (2"5#'!32$!-0$
                             %&'$                                                      %%&$
                                                        *"2'#!5#42$
                                                           6/&$
   )2"6#(!32$!.0$
     +"2(#!6#42$
        78'$
                                  ()*++(,-./$
                                                                                           '()**'+,-.$
                                      &'$
                              #0#*1+$                                  #0#)1*$                 /&$
                                %'$                                     %%&$
                                                "!(!123(#420$
                             "!)!123)#420$          %&$
                                 5'$
18




   Research Question Q3
#$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+
                            !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2
                    92):!;1$ 2<"2)#12.3$                                         72(8!91$
    jEdit              %'$       5'$
                                                  Mina                              %&$ 2:"2(#12-3$
                                                                                            ;&$



                                                                                       !"#$
                             !"#$                     (2"5#'!32$!-0$
                             %&'$                                                      %%&$
                                                        *"2'#!5#42$
                                                           6/&$
   )2"6#(!32$!.0$
     +"2(#!6#42$
        78'$
                                  ()*++(,-./$
                                                                                           '()**'+,-.$
                                      &'$
                              #0#*1+$                                  #0#)1*$                 /&$
                                %'$                                     %%&$
                                                "!(!123(#420$
                             "!)!123)#420$          %&$
                                 5'$




            46% - 68%
 Replicate and Specialize
18




   Research Question Q3
#$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+
                            !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2
                    92):!;1$ 2<"2)#12.3$                                         72(8!91$
    jEdit              %'$       5'$
                                                  Mina                              %&$ 2:"2(#12-3$
                                                                                            ;&$



                                                                                       !"#$
                             !"#$                     (2"5#'!32$!-0$
                             %&'$                                                      %%&$
                                                        *"2'#!5#42$
                                                           6/&$
   )2"6#(!32$!.0$
     +"2(#!6#42$
        78'$
                                  ()*++(,-./$
                                                                                           '()**'+,-.$
                                      &'$
                              #0#*1+$                                  #0#)1*$                 /&$
                                %'$                                     %%&$
                                                "!(!123(#420$
                             "!)!123)#420$          %&$
                                 5'$




            46% - 68%                                     22% - 23%
 Replicate and Specialize                                       API Usage
19




   Research Question Q3
#$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+
                            !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2%*#+
                    92):!;1$ 2<"2)#12.3$                                         72(8!91$
                       %'$       5'$                                                %&$ 2:"2(#12-3$
                                                                                            ;&$



                                                                                       !"#$
                             !"#$                     (2"5#'!32$!-0$
                             %&'$                                                      %%&$
                                                        *"2'#!5#42$
                                                           6/&$
   )2"6#(!32$!.0$
     +"2(#!6#42$
        78'$
                                  ()*++(,-./$
                                                                                           '()**'+,-.$
                                      &'$
                              #0#*1+$                                  #0#)1*$                 /&$
                                %'$                                     %%&$
                                                "!(!123(#420$
                             "!)!123)#420$          %&$
                                 5'$
19




   Research Question Q3
#$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+
                            !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2%*#+
                    92):!;1$ 2<"2)#12.3$                                         72(8!91$
                       %'$       5'$                                                %&$ 2:"2(#12-3$
                                                                                            ;&$



                                                                                       !"#$
                             !"#$                     (2"5#'!32$!-0$
                             %&'$                                                      %%&$
                                                        *"2'#!5#42$
                                                           6/&$
   )2"6#(!32$!.0$
     +"2(#!6#42$
        78'$
                                  ()*++(,-./$
                                                                                           '()**'+,-.$
                                      &'$
                              #0#*1+$                                  #0#)1*$                 /&$
                                %'$                                     %%&$
                                                "!(!123(#420$
                             "!)!123)#420$          %&$
                                 5'$




                                                       Inconsistent changes are
                                                        carried out on purpose
                                                       because 70%-90% of the
                                                        cloned code is meant to
                                                        be changed separately!
QUESTIONS?

More Related Content

What's hot

How to be a bioinformatician
How to be a bioinformaticianHow to be a bioinformatician
How to be a bioinformaticianChristian Frech
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionPhil Calçado
 
Verification and validation of knowledge bases using test cases generated by ...
Verification and validation of knowledge bases using test cases generated by ...Verification and validation of knowledge bases using test cases generated by ...
Verification and validation of knowledge bases using test cases generated by ...Waqas Tariq
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...Gui Padua
 
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...David Rosenblum
 

What's hot (9)

How to be a bioinformatician
How to be a bioinformaticianHow to be a bioinformatician
How to be a bioinformatician
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a Function
 
08000182
0800018208000182
08000182
 
scp
scpscp
scp
 
Verification and validation of knowledge bases using test cases generated by ...
Verification and validation of knowledge bases using test cases generated by ...Verification and validation of knowledge bases using test cases generated by ...
Verification and validation of knowledge bases using test cases generated by ...
 
Taming Snakemake
Taming SnakemakeTaming Snakemake
Taming Snakemake
 
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...IEEE ACM Studying the Relationship between Exception Handling Practices and P...
IEEE ACM Studying the Relationship between Exception Handling Practices and P...
 
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...
Scalability in Software Systems Engineering: The Good, the Bad, and the Ugly ...
 
Ready, Set, Refactor
Ready, Set, RefactorReady, Set, Refactor
Ready, Set, Refactor
 

Viewers also liked

Cloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulCloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulNicolas Bettenburg
 
Automatic Identification of Bug Introducing Changes
Automatic Identification of Bug Introducing ChangesAutomatic Identification of Bug Introducing Changes
Automatic Identification of Bug Introducing ChangesNicolas Bettenburg
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...Nicolas Bettenburg
 
Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Nicolas Bettenburg
 
A Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataA Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataNicolas Bettenburg
 
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityStudying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityNicolas Bettenburg
 
Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Nicolas Bettenburg
 
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Nicolas Bettenburg
 
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsThink Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsNicolas Bettenburg
 
The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07Nicolas Bettenburg
 
Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Nicolas Bettenburg
 
Computing Accuracy Precision And Recall
Computing Accuracy Precision And RecallComputing Accuracy Precision And Recall
Computing Accuracy Precision And RecallNicolas Bettenburg
 

Viewers also liked (14)

Mud flash
Mud flashMud flash
Mud flash
 
Cloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered HarmfulCloning Considered Harmful Considered Harmful
Cloning Considered Harmful Considered Harmful
 
Automatic Identification of Bug Introducing Changes
Automatic Identification of Bug Introducing ChangesAutomatic Identification of Bug Introducing Changes
Automatic Identification of Bug Introducing Changes
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
 
Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...Mining Development Repositories to Study the Impact of Collaboration on Softw...
Mining Development Repositories to Study the Impact of Collaboration on Softw...
 
A Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured DataA Lightweight Approach to Uncover Technical Information in Unstructured Data
A Lightweight Approach to Uncover Technical Information in Unstructured Data
 
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software QualityStudying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software Quality
 
Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*Finding Paths in Large Spaces - A* and Hierarchical A*
Finding Paths in Large Spaces - A* and Hierarchical A*
 
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...
 
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction ModelsThink Locally, Act Gobally - Improving Defect and Effort Prediction Models
Think Locally, Act Gobally - Improving Defect and Effort Prediction Models
 
The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07The Quality of Bug Reports in Eclipse ETX'07
The Quality of Bug Reports in Eclipse ETX'07
 
Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?Duplicate Bug Reports Considered Harmful ... Really?
Duplicate Bug Reports Considered Harmful ... Really?
 
Computing Accuracy Precision And Recall
Computing Accuracy Precision And RecallComputing Accuracy Precision And Recall
Computing Accuracy Precision And Recall
 
Fuzzy Logic in Smart Homes
Fuzzy Logic in Smart HomesFuzzy Logic in Smart Homes
Fuzzy Logic in Smart Homes
 

Similar to An Empirical Study on Inconsistent Changes to Code Clones at Release Level

Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburgSAIL_QU
 
A novel approach for clone group mapping
A novel approach for clone group mappingA novel approach for clone group mapping
A novel approach for clone group mappingijseajournal
 
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...IRJET Journal
 
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...IRJET Journal
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 
A Novel Approach for Code Clone Detection Using Hybrid Technique
A Novel Approach for Code Clone Detection Using Hybrid TechniqueA Novel Approach for Code Clone Detection Using Hybrid Technique
A Novel Approach for Code Clone Detection Using Hybrid TechniqueINFOGAIN PUBLICATION
 
Paper id 22201490
Paper id 22201490Paper id 22201490
Paper id 22201490IJRAT
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
 
Applying Machine Learning to Software Clustering
Applying Machine Learning to Software ClusteringApplying Machine Learning to Software Clustering
Applying Machine Learning to Software Clusteringbutest
 
ICSE 2011 Research Paper on Modularity Violations
ICSE 2011 Research Paper on Modularity ViolationsICSE 2011 Research Paper on Modularity Violations
ICSE 2011 Research Paper on Modularity Violationsmiryung
 
A novel approach based on topic
A novel approach based on topicA novel approach based on topic
A novel approach based on topiccsandit
 
IRJET- Code Cloning using Abstract Syntax Tree
IRJET- Code Cloning using Abstract Syntax TreeIRJET- Code Cloning using Abstract Syntax Tree
IRJET- Code Cloning using Abstract Syntax TreeIRJET Journal
 
Model-based Analysis of Large Scale Software Repositories
Model-based Analysis of Large Scale Software RepositoriesModel-based Analysis of Large Scale Software Repositories
Model-based Analysis of Large Scale Software RepositoriesMarkus Scheidgen
 
All we like sheep: Cloning as an Engineering Tool
All we like sheep: Cloning as an Engineering ToolAll we like sheep: Cloning as an Engineering Tool
All we like sheep: Cloning as an Engineering Toolmigod
 
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...AdaCore
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentRoopesh Jhurani
 
Annotated Bibliography .Guidelines Annotated Bibliograph.docx
Annotated Bibliography  .Guidelines Annotated Bibliograph.docxAnnotated Bibliography  .Guidelines Annotated Bibliograph.docx
Annotated Bibliography .Guidelines Annotated Bibliograph.docxjustine1simpson78276
 
Open source evolution analysis
Open source evolution analysisOpen source evolution analysis
Open source evolution analysisIzzat Alsmadi
 
Software Product Line Analysis and Detection of Clones
Software Product Line Analysis and Detection of ClonesSoftware Product Line Analysis and Detection of Clones
Software Product Line Analysis and Detection of ClonesRSIS International
 

Similar to An Empirical Study on Inconsistent Changes to Code Clones at Release Level (20)

Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburg
 
A novel approach for clone group mapping
A novel approach for clone group mappingA novel approach for clone group mapping
A novel approach for clone group mapping
 
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
 
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
Study on Different Code-Clone Detection Techniques & Approaches to MitigateCo...
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 
A Novel Approach for Code Clone Detection Using Hybrid Technique
A Novel Approach for Code Clone Detection Using Hybrid TechniqueA Novel Approach for Code Clone Detection Using Hybrid Technique
A Novel Approach for Code Clone Detection Using Hybrid Technique
 
Paper id 22201490
Paper id 22201490Paper id 22201490
Paper id 22201490
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in Production
 
Applying Machine Learning to Software Clustering
Applying Machine Learning to Software ClusteringApplying Machine Learning to Software Clustering
Applying Machine Learning to Software Clustering
 
ICSE 2011 Research Paper on Modularity Violations
ICSE 2011 Research Paper on Modularity ViolationsICSE 2011 Research Paper on Modularity Violations
ICSE 2011 Research Paper on Modularity Violations
 
A novel approach based on topic
A novel approach based on topicA novel approach based on topic
A novel approach based on topic
 
IRJET- Code Cloning using Abstract Syntax Tree
IRJET- Code Cloning using Abstract Syntax TreeIRJET- Code Cloning using Abstract Syntax Tree
IRJET- Code Cloning using Abstract Syntax Tree
 
Model-based Analysis of Large Scale Software Repositories
Model-based Analysis of Large Scale Software RepositoriesModel-based Analysis of Large Scale Software Repositories
Model-based Analysis of Large Scale Software Repositories
 
All we like sheep: Cloning as an Engineering Tool
All we like sheep: Cloning as an Engineering ToolAll we like sheep: Cloning as an Engineering Tool
All we like sheep: Cloning as an Engineering Tool
 
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software Development
 
CASCON
CASCONCASCON
CASCON
 
Annotated Bibliography .Guidelines Annotated Bibliograph.docx
Annotated Bibliography  .Guidelines Annotated Bibliograph.docxAnnotated Bibliography  .Guidelines Annotated Bibliograph.docx
Annotated Bibliography .Guidelines Annotated Bibliograph.docx
 
Open source evolution analysis
Open source evolution analysisOpen source evolution analysis
Open source evolution analysis
 
Software Product Line Analysis and Detection of Clones
Software Product Line Analysis and Detection of ClonesSoftware Product Line Analysis and Detection of Clones
Software Product Line Analysis and Detection of Clones
 

More from Nicolas Bettenburg

10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...Nicolas Bettenburg
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
 
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
Managing Community Contributions:  Lessons Learned from a Case Study on Andro...Managing Community Contributions:  Lessons Learned from a Case Study on Andro...
Managing Community Contributions: Lessons Learned from a Case Study on Andro...Nicolas Bettenburg
 
Predictors of Customer Perceived Quality
Predictors of Customer Perceived QualityPredictors of Customer Perceived Quality
Predictors of Customer Perceived QualityNicolas Bettenburg
 
Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Nicolas Bettenburg
 

More from Nicolas Bettenburg (7)

10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
 
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
Managing Community Contributions:  Lessons Learned from a Case Study on Andro...Managing Community Contributions:  Lessons Learned from a Case Study on Andro...
Managing Community Contributions: Lessons Learned from a Case Study on Andro...
 
Approximation Algorithms
Approximation AlgorithmsApproximation Algorithms
Approximation Algorithms
 
Predictors of Customer Perceived Quality
Predictors of Customer Perceived QualityPredictors of Customer Perceived Quality
Predictors of Customer Perceived Quality
 
Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.Extracting Structural Information from Bug Reports.
Extracting Structural Information from Bug Reports.
 
Metropolis Instant Radiosity
Metropolis Instant RadiosityMetropolis Instant Radiosity
Metropolis Instant Radiosity
 

Recently uploaded

Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1GloryAnnCastre1
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvRicaMaeCastro1
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdfMr Bounab Samir
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWQuiz Club NITW
 
ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Projectjordimapav
 
4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptxmary850239
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptx
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptxMan or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptx
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptxDhatriParmar
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDhatriParmar
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsPooky Knightsmith
 
Multi Domain Alias In the Odoo 17 ERP Module
Multi Domain Alias In the Odoo 17 ERP ModuleMulti Domain Alias In the Odoo 17 ERP Module
Multi Domain Alias In the Odoo 17 ERP ModuleCeline George
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfPrerana Jadhav
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...Nguyen Thanh Tu Collection
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...DhatriParmar
 

Recently uploaded (20)

Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdf
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITW
 
ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Project
 
4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptx
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptxMan or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptx
Man or Manufactured_ Redefining Humanity Through Biopunk Narratives.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young minds
 
Multi Domain Alias In the Odoo 17 ERP Module
Multi Domain Alias In the Odoo 17 ERP ModuleMulti Domain Alias In the Odoo 17 ERP Module
Multi Domain Alias In the Odoo 17 ERP Module
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdf
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
 
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptxINCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 

An Empirical Study on Inconsistent Changes to Code Clones at Release Level

  • 1. Nicolas Bettenburg Walid Ibrahim Ahmed E. Hassan Weyi Shang Bram Adams Ying Zou An Empirical Study on Inconsistent Changes to Code Clones at Release Level
  • 2. 2 Code Clones: Recent Research in the Field
  • 3. 2 Code Clones: Recent Research in the Field “Cloning Considered Harmful” Considered Harmful Cory Kapser and Michael W. Godfrey Cloning as Software Architecture Group (SWAG) Engineering Tool David R. Cheriton School of Computer Science, University of Waterloo {cjkapser, migod}@uwaterloo.ca Abstract clones pose additional problems if they do not evolve synchronously. With this in mind, methods for automatic urrent literature on the topic of duplicated (cloned) refactoring have been suggested [4, 7], and tools specifically in software systems often considers duplication to aid developers in the manual refactoring of clones have ful to the system quality and the reasons commonly also been developed [19]. for duplicating code often have a negative There is no doubt that code cloning is often an indication otation. While these positions are sometimes of sloppy design and in such cases should be considered to ct, during our case studies we have found that this is be a kind of development “bad smell”. However, we have niversally true, and we have found several situations found that there are many instances where this is simply not e code duplication seems to be a reasonable or the case. For example, cloning may be used to introduce beneficial design option. For example, a method of experimental optimizations to core subsystems without ducing experimental changes to core subsystems is to negatively effecting the stability of the main code. Thus, cate the subsystem and introduce changes there in a a variety of concerns such as stability, code ownership, and of sandbox testbed. As features mature and become design clarity need to be considered before any refactoring e within the experimental subsystem, they can then is attempted; a manager should try to understand the reason troduced gradually into the stable code base. In this behind the duplication before deciding what action (if any) risk of introducing instabilities in the stable version is to take. 1 mized. This paper describes several patterns of cloning This paper introduces eight cloning patterns that we have we have encountered in our case studies and discusses uncovered during case studies on large software systems,
  • 4. 2 Code Clones: Recent Research in the Field “Cloning Considered Harmful” Considered Harmful Cory Kapser and Michael W. Godfrey Cloning as Software Architecture Group (SWAG) Engineering Tool David R. Cheriton School of Computer Science, University of Waterloo {cjkapser, migod}@uwaterloo.ca Abstract Do Code Clones Matter? clones pose additional problems if they do not evolve synchronously. With this in mind, methods for automatic urrent literature on the topic of duplicated (cloned) refactoring have been suggested [4, 7], and tools specifically in software systems often considers Deissenboeck, to aid developers in the Stefan refactoring of clones have Elmar Juergens, Florian duplication Benjamin Hummel, manual Wagner Inconsistent Clones Institut f¨ r Informatik, Technischebeen developedM¨ nchen ful to the system quality and theureasons commonly also Universit¨ t [19]. a u Single Snapshots for duplicating code often have 3, 85748 Garching b. M¨ nchen, Germany Boltzmannstr. a negative There is no doubt that code cloning is often an indication u otation. While these positions are sometimes of sloppy design and in such cases should be considered to {juergens,deissenb,hummelb,wagnerst}@in.tum.de ct, during our case studies we have found that this is be a kind of development “bad smell”. However, we have niversally true, and we have found several situations found that there are many instances where this is simply not e code duplication seems to be a reasonable or the case. For example, cloning may be used to introduce Abstract beneficial design option. For example, a method of experimental optimizations tofixed insubsystems without found in cloned code but not core all clone instances, ducing experimental changes to core subsystems is to negatively effecting the still exhibit the incorrect behavior. the system is likely to stability of the main code. Thus, cate the subsystem and introduce changes there in a ode cloning is not only assumed to inflate mainte- a variety of concerns such as stability, codewhere a missing To illustrate this, Fig. 1 shows an example, ownership, and ce costs but also considered defect-prone asand become of sandbox testbed. As features mature inconsistent null-check was retrofitted in only one clone instance. design clarity need to be considered before any refactoring nges to code duplicates can lead to unexpected can then e within the experimental subsystem, they behavior. is attempted; apresents the results of a understand case study This paper manager should try to large-scale the reason sequently,gradually into the of duplicated code, clone troduced the identification stable code base. In this behind the duplication before deciding whatare changed in- that was undertaken to find out (1) if clones action (if any) risk of has been a very active area theresearch in recent ction, introducing instabilities in of stable version is to take. 1 consistently, (2) if these inconsistencies are introduced in- mized. This paper describes substantial investigation of s. Up to now, however, no several patterns of cloning tentionally and, (3) if unintentional inconsistencies we have This paper introduces eight cloning patterns that can rep- consequences of code cloning on program correctness we have encountered in our case studies and discusses uncovered during case studies we analyzed three commer- resent faults. In this case study on large software systems,
  • 5. 2 Code Clones: Recent Research in the Field “Cloning Considered Harmful” Considered Harmful Cory Kapser and Michael W. Godfrey Cloning as Software Architecture Group (SWAG) Engineering Tool David R. Cheriton School of Computer Science, University of Waterloo {cjkapser, migod}@uwaterloo.ca Abstract Do Code Clones Matter? clones pose additional problems if they do not evolve synchronously. With this in mind, methods for automatic urrent literature on the topic of duplicated (cloned) refactoring have been suggested [4, 7], and tools specifically in software systems often considers Deissenboeck, to aid developers in the Stefan refactoring of clones have Elmar Juergens, Florian duplication Benjamin Hummel, manual Wagner Inconsistent Clones Institut f¨ r Informatik, Technischebeen developedM¨ nchen ful to the system quality and theureasons commonly also Universit¨ t [19]. a u Single Snapshots for duplicating code often have 3, 85748 Garching b. M¨ nchen, Germany Boltzmannstr. a negative There is no doubt that code cloning is often an indication u otation. While these positions are sometimes of sloppy design and in such cases should be considered to {juergens,deissenb,hummelb,wagnerst}@in.tum.de ct, during our case studies we have found that this is be a kind of development “bad smell”. However, we have niversally true, and we have found several situations found that there are many instances where this is simply not e code duplication seems to be a reasonable or the case. For example, cloning may be used to introduce Abstract beneficial design option. For example, a method of experimental optimizations tofixed insubsystems without found in cloned code but not core all clone instances, A Study of Consistent and Inconsistent Changesthe still exhibit Clones code. Thus, ducing experimental changes to core subsystems is to the system is likely to Code the main negatively effecting to stability of the incorrect behavior. cate the subsystem and introduce changes there in a ode cloning is not only assumed to inflate mainte- a variety of concerns such as stability, codewhere a missing To illustrate this, Fig. 1 shows an example, ownership, and ce costs but also considered defect-prone asand become of sandbox testbed. As features mature inconsistent null-check was retrofitted in only one clone instance. Inconsistent Clones design clarity need to be considered before any refactoring nges to code duplicates can lead to unexpected can thenKrinke This paperapresents the results of a understand case study Jens e within the experimental subsystem, they behavior. is attempted; manager should try to large-scale the reason sequently,gradually into the of duplicated code, clone Hagen, Germany to before deciding whatare changed in- troduced the identification stable code base. In at in this behind the duplication find out (1) if clones action (if any) that was undertaken Weekly Snapshots FernUniversit¨ risk of has been a very active area theresearch in recent ction, introducing instabilities in of stable version is to take. 1 consistently, (2) if these inconsistencies are introduced in- krinke@acm.org tentionally and, (3) if unintentional inconsistencies we have mized. This paper describes substantial investigation of s. Up to now, however, no several patterns of cloning This paper introduces eight cloning patterns that can rep- consequences of code cloning on program correctness we have encountered in our case studies and discusses uncovered during case studies we analyzed three commer- resent faults. In this case study on large software systems,
  • 6. 3 Code Clones: Inconsistent Changes “During the evolution of a system, code clones should be changed consistently to prevent bugs.”
  • 7. 3 Code Clones: Inconsistent Changes “During the evolution of a system, code clones should be changed consistently to prevent bugs.” Demonstrated to be true at a micro-level!
  • 8. 4 Revision Level vs. Release Level Analysis r2014 ... r2209 ... r2351 ... r2682 Revisions
  • 9. 4 Revision Level vs. Release Level Analysis A r2014 ... r2209 ... r2351 ... r2682 Revisions
  • 10. 4 Revision Level vs. Release Level Analysis A A r2014 ... r2209 ... r2351 ... r2682 Revisions
  • 11. 4 Revision Level vs. Release Level Analysis A A r2014 ... r2209 ... r2351 ... r2682 Revisions
  • 12. 4 Revision Level vs. Release Level Analysis A A r2014 ... r2209 ... r2351 ... r2682 Revisions
  • 13. 4 Revision Level vs. Release Level Analysis A A ... Revisions Experimentation r2014 ... r2209 ... r2351 r2682 Refactoring Bug-Fixing
  • 14. 4 Revision Level vs. Release Level Analysis Transient Effects Code Clones Amount Inconsistent Changes A A Time ... Revisions Experimentation r2014 ... r2209 ... r2351 r2682 Refactoring Bug-Fixing
  • 15. 4 Revision Level vs. Release Level Analysis Transient Effects Code Clones Amount Inconsistent Changes A A Time ... Revisions Experimentation r2014 ... r2209 ... r2351 r2682 Refactoring Bug-Fixing 2.1 2.2 2.3 2.4 3.0 Releases
  • 16. 5 Study Design: Subject Systems 22 Releases over 1 year 51 Days / release 15k Lines of code 50 Releases over 4 years 36 Days / release 90k Lines of code
  • 17. 6 Study Design: Clone Detection & Tracking 2.1 2.2 2.3 2.4 3.0 Releases
  • 18. 6 Study Design: Clone Detection & Tracking Clone Reports 2.1 2.2 2.3 2.4 3.0 Releases
  • 19. 6 Study Design: Clone Detection & Tracking Clone Groups Clone Reports 2.1 2.2 2.3 2.4 3.0 Releases
  • 20. 6 Study Design: Clone Detection & Tracking Genealogies Clone Groups Clone Reports 2.1 2.2 2.3 2.4 3.0 Releases
  • 21. 7 Study Design: Inconsistent Changes Inconsistent Change Consistent Change 2.1 2.2 2.3 2.4 3.0
  • 22. 8 Research Questions What are the characteristics of long-lived clone Q1 genealogies at release level? What is the effect of inconsistent changes on code Q2 quality when measured at release level? What type of cloning patterns do we observe at release Q3 level?
  • 23. 9 Research Questions What are the characteristics of long-lived Q1 clone genealogies at release level? Life-Time Group Size
  • 24. Lifetime  of  Clone  Groups 10 50 20 Number  of  Releases 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 25. Lifetime  of  Clone  Groups 10 50 20 Number  of  Releases 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 26. Lifetime  of  Clone  Groups 10 50 20 Number  of  Releases 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 27. Lifetime  of  Clone  Groups 10 50 Long-lived clone groups 20 Number  of  Releases 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 28. 11 Size  of  Clone  Groups 200 100 50 Number  of  Clones 20 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 29. 11 Size  of  Clone  Groups 200 100 50 Number  of  Clones 20 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 30. 11 Size  of  Clone  Groups 200 Mostly small 100 clone groups 50 Number  of  Clones 20 10 5 2 1 Apache  Mina jEdit Number  of  Genealogies
  • 31. 12 Research Questions What is the effect of inconsistent changes on code Q2 quality when measured at release level? Inconsistent Change Reports 2.1 2.2 2.3 Inspection
  • 32. 13 Research Question Q2 org.gjt.sp.jedit.jEdit.newView(View, Buffer) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch jEdit if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer("jeditresource:/doc/welcome.html"); 4.0.2 ... org.gjt.sp.jedit.jEdit.newView(View, String) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer("jeditresource:/doc/welcome.html"); ...
  • 33. 14 Research Question Q2 org.gjt.sp.jedit.jEdit.newView(View, Buffer) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch jEdit if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer("jeditresource:/doc/welcome.html"); 4.0.2 4.0.3 ... org.gjt.sp.jedit.jEdit.newView(View, String) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer("jeditresource:/doc/welcome.html"); ...
  • 34. 15 Research Question Q2 org.gjt.sp.jedit.jEdit.newView(View, Buffer) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch jEdit if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer(); 4.0.3 4.0.4 ... org.gjt.sp.jedit.jEdit.newView(View, String) { ... // show tip of the day if(newView == viewsFirst) { // Don't show the welcome message if jEdit was started // with the -nosettings switch if(settingsDirectory != null && getBooleanProperty("firstTime")) new HelpViewer("jeditresource:/doc/welcome.html"); ...
  • 35. 16 Research Question Q2 • 748 inconsistent changes flagged by our tool • Manual inspection of reports and source code • Only 7 inconsistent changes related to bugs • Inconsistent changes seem carried out on purpose.
  • 36. 16 Research Question Q2 • 748 inconsistent changes flagged by our tool • Manual inspection of reports and source code • Only 7 inconsistent changes related to bugs • Inconsistent changes seem carried out on purpose. Only a fraction of inconsistent changes to long-lived clones introduce bugs!
  • 37. 17 Research Questions What type of cloning patterns do we observe Q3 at release level? Clone Patterns Classification Clone Reports 2.1 2.2 2.3 2.4 3.0 Releases
  • 38. 18 Research Question Q3 #$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+ !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2 92):!;1$ 2<"2)#12.3$ 72(8!91$ jEdit %'$ 5'$ Mina %&$ 2:"2(#12-3$ ;&$ !"#$ !"#$ (2"5#'!32$!-0$ %&'$ %%&$ *"2'#!5#42$ 6/&$ )2"6#(!32$!.0$ +"2(#!6#42$ 78'$ ()*++(,-./$ '()**'+,-.$ &'$ #0#*1+$ #0#)1*$ /&$ %'$ %%&$ "!(!123(#420$ "!)!123)#420$ %&$ 5'$
  • 39. 18 Research Question Q3 #$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+ !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2 92):!;1$ 2<"2)#12.3$ 72(8!91$ jEdit %'$ 5'$ Mina %&$ 2:"2(#12-3$ ;&$ !"#$ !"#$ (2"5#'!32$!-0$ %&'$ %%&$ *"2'#!5#42$ 6/&$ )2"6#(!32$!.0$ +"2(#!6#42$ 78'$ ()*++(,-./$ '()**'+,-.$ &'$ #0#*1+$ #0#)1*$ /&$ %'$ %%&$ "!(!123(#420$ "!)!123)#420$ %&$ 5'$ 46% - 68% Replicate and Specialize
  • 40. 18 Research Question Q3 #$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+ !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2 92):!;1$ 2<"2)#12.3$ 72(8!91$ jEdit %'$ 5'$ Mina %&$ 2:"2(#12-3$ ;&$ !"#$ !"#$ (2"5#'!32$!-0$ %&'$ %%&$ *"2'#!5#42$ 6/&$ )2"6#(!32$!.0$ +"2(#!6#42$ 78'$ ()*++(,-./$ '()**'+,-.$ &'$ #0#*1+$ #0#)1*$ /&$ %'$ %%&$ "!(!123(#420$ "!)!123)#420$ %&$ 5'$ 46% - 68% 22% - 23% Replicate and Specialize API Usage
  • 41. 19 Research Question Q3 #$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+ !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2%*#+ 92):!;1$ 2<"2)#12.3$ 72(8!91$ %'$ 5'$ %&$ 2:"2(#12-3$ ;&$ !"#$ !"#$ (2"5#'!32$!-0$ %&'$ %%&$ *"2'#!5#42$ 6/&$ )2"6#(!32$!.0$ +"2(#!6#42$ 78'$ ()*++(,-./$ '()**'+,-.$ &'$ #0#*1+$ #0#)1*$ /&$ %'$ %%&$ "!(!123(#420$ "!)!123)#420$ %&$ 5'$
  • 42. 19 Research Question Q3 #$$%&'#()*+),+!)-.+!")*.$+%*+/0-%1+ !"#$$%&'#()*+),+!)-.+!")*.$+%*+/0#'1.+2%*#+ 92):!;1$ 2<"2)#12.3$ 72(8!91$ %'$ 5'$ %&$ 2:"2(#12-3$ ;&$ !"#$ !"#$ (2"5#'!32$!-0$ %&'$ %%&$ *"2'#!5#42$ 6/&$ )2"6#(!32$!.0$ +"2(#!6#42$ 78'$ ()*++(,-./$ '()**'+,-.$ &'$ #0#*1+$ #0#)1*$ /&$ %'$ %%&$ "!(!123(#420$ "!)!123)#420$ %&$ 5'$ Inconsistent changes are carried out on purpose because 70%-90% of the cloned code is meant to be changed separately!
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.