Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Analyzing software evolution and quality by extracting Asynchrony change patterns

Published: 01 September 2017 Publication History

Abstract

An empirical study to identify the more risky part of code in software systems.Cloned files that follow Asynchrony change patterns are more fault-prone.Anti-patterns following Asynchrony change pattern are up to five times faultier. Change patterns describe two or more files were often changed together during the development or the maintenance of software systems. Several studies have been presented to detect change patterns and to analyze their types and their impact on software quality. In this context, we introduced the Asynchrony change pattern to describes a set of files that always change together in the same change periods, regardless developers who maintained them. In this paper, we investigate the impact of Asynchrony change pattern on design and code smells such as anti-patterns and code clones.Concretely, we conduct an empirical study by detecting Asynchrony change patterns, anti-patterns and code clones occurrences on 22 versions of four software systems and analyzing their fault-proneness. Results show that cloned files that follow the same Asynchrony change patterns have significantly increased fault-proneness with respect to other clones, and that anti-patterns following the same Asynchrony change pattern can be up to five times more risky in terms of fault-proneness as compared to other anti-patterns. Asynchrony change patterns thus seem to be strong indicators of fault-proneness for clones and anti-patterns.

References

[1]
M. Abbes, F. Khomh, Y.-G. Guhneuc, G. Antoniol, An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension, IEEE Computer Society, 2011.
[2]
L. Aversano, L. Cerulo, M. Di Penta, How clones are maintained: an empirical study, IEEE, 2007.
[3]
B.S. Baker, On finding duplication and near-duplication in large software systems, IEEE, 1995.
[4]
M. Balazinska, E. Merlo, M. Dagenais, B. Lague, K. Kontogiannis, Measuring clone based reengineering opportunities, IEEE, 1999.
[5]
V.R. Basili, L.C. Briand, W.L. Melo, A validation of object-oriented design metrics as quality indicators, IEEE Trans. Softw. Eng., 22 (1996) 751-761.
[6]
V.R. Basili, B.T. Perricone, Software errors and complexity: an empirical investigation, Commun. ACM, 27 (1984) 42-52.
[7]
I.D. Baxter, A. Yahin, L. Moura, M. SantAnna, L. Bier, Clone detection using abstract syntax trees, IEEE, 1998.
[8]
S. Bellon, R. Koschke, G. Antoniol, J. Krinke, E. Merlo, Comparison and evaluation of clone detection tools, IEEE Trans. Softw. Eng., 33 (2007) 577-591.
[9]
A. Bernstein, J. Ekanayake, M. Pinzger, Improving defect prediction using temporal features and non linear models, ACM, 2007.
[10]
S. Bouktif, G. Antoniol, E. Merlo, M. Neteler, A Plugin Based Architecture for Software Maintenance, Department of Computer Science cole Polytechnique de Montral, 2006.
[11]
W.J. Brown, R.C. Malveau, W.H. Brown, H.W. McCormick III, T.J. Mowbray, Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis, John Wiley and Sons, 1998.
[12]
E. Burd, J. Bailey, Evaluating clone detection tools for use during preventative maintenance, IEEE Computer Society, Washington, DC, USA, 2002.
[13]
G. Canfora, M. Ceccarelli, L. Cerulo, M. Di Penta, Using multivariate time series and association rules to detect logical change coupling: an empirical study, IEEE Computer Society Press, Washington, DC, USA, 2010.
[14]
M. Ceccarelli, L. Cerulo, G. Canfora, M. Di Penta, An eclectic approach for change impact analysis, ACM Press, New York, NY, USA, 2010.
[15]
W.T. Cheung, S. Ryu, S. Kim, Development nature matters: an empirical study of code clones in JavaScript applications, Empir. Softw. Eng., 21 (2016) 517-564.
[16]
S.R. Chidamber, C.F. Kemerer, A metrics suite for object oriented design, IEEE Trans. Softw. Eng., 20 (1994) 476-493.
[17]
J.R. Cordy, T.R. Dean, N. Synytskyy, Practical language-independent detection of near-miss clones, IBM Press, 2004.
[18]
M. DAmbros, M. Lanza, R. Robbes, On the relationship between change coupling and software defects, IEEE Computer Society, Washington, DC, USA, 2009.
[19]
S. Ducasse, M. Rieger, S. Demeyer, A language independent approach for detecting duplicated code, IEEE Computer Society, Washington, DC, USA, 1999.
[20]
S. Ducasse, M. Rieger, S. Demeyer, A language independent approach for detecting duplicated code, IEEE, 1999.
[21]
E.V. Emden, L. Moonen, Java quality assurance by detecting code smells, IEEE Computer Society Press, 2002.
[22]
R. Falke, P. Frenzel, R. Koschke, Empirical evaluation of clone detection using syntax suffix trees, Empir. Softw. Eng., 13 (2008) 601-643.
[23]
M. Fowler, Refactoring: Improving the Design of Existing Code, International Thomson Computer Press, 1999.
[24]
R. Geiger, B. Fluri, H.C. Gall, M. Pinzger, Relation of code clones and change couplings, Springer-Verlag, Berlin, Heidelberg, 2006.
[25]
Y.-G. Guhneuc, G. Antoniol, DeMIMA: a multilayered approach for design pattern identification, IEEE Trans. Softw. Eng., 34 (2008) 667-684.
[26]
Y.-G. Guhneuc, H. Sahraoui, F. Zaidi, Fingerprinting design patterns, IEEE, 2004.
[27]
M.H. Halstead, Elements of Software Science (Operating and Programming Systems Series), Elsevier Science Inc., New York, NY, USA, 1977.
[28]
A.E. Hassan, R.C. Holt, The top ten list: dynamic fault prediction, IEEE Computer Society, 2005.
[29]
F. Jaafar, Y.-G. Guhneuc, S. Hamel, G. Antoniol, Detecting asynchrony and dephase change patterns by mining software repositories, J. Softw. Evol. Process, 26 (2014) 77-106.
[30]
F. Jaafar, Y.-G. Gueheneuc, S. Hamel, F. Khomh, Mining the relationship between anti-patterns dependencies and fault-proneness, IEEE, 2013.
[31]
F. Jaafar, Y.-G. Guhneuc, S. Hamel, F. Khomh, Analysing anti-patterns static relationships with design patterns, J. Electron. Commun. Eur. Assoc. Softw. Sci. Technol, 59 (2014) 1-26.
[32]
E. Juergens, F. Deissenboeck, B. Hummel, S. Wagner, Do code clones matter?, IEEE Computer Society, Washington, DC, USA, 2009.
[33]
T. Kamiya, S. Kusumoto, K. Inoue, CCFinder: A Multilinguistic Token-based Code Clone Detection System for Large Scale Source Code, IEEE, 2002.
[34]
C. Kapser, M.W. Godfrey, Cloning considered harmful considered harmful, IEEE, 2006.
[35]
F. Khomh, M.D. Penta, Y.-G. Guhneuc, G. Antoniol, An exploratory study of the impact of antipatterns on class change- and fault-proneness, Empir. Softw. Eng., 17 (2012) 243-275.
[36]
R. Komondoor, S. Horwitz, Effective, automatic procedure extraction, IEEE, 2003.
[37]
K.A. Kontogiannis, R. DeMori, E. Merlo, M. Galler, M. Bernstein, Pattern matching for clone and concept detection, Springer, 1996.
[38]
A.G. Koru, D. Zhang, K. El Emam, H. Liu, An investigation into the functional form of the size-defect relationship for software modules, IEEE Trans. Softw. Eng., 35 (2009) 293-304.
[39]
R. Koschke, S. Bazrafshan, Software-clone rates in open-source programs written in C or C++, 2016.
[40]
R. Koschke, R. Falke, P. Frenzel, Clone detection using abstract syntax suffix trees, IEEE, 2006.
[41]
J. Krinke, Identifying similar code with program dependence graphs, IEEE, 2001.
[42]
J. Krinke, A study of consistent and inconsistent changes to code clones, IEEE Computer Society, Washington, DC, USA, 2007.
[43]
S. Lee, I. Jeong, SDD: high performance code clone detection system for large scale source code, ACM, 2005.
[44]
C. Li, J. Sun, H. Chen, An improved method for tree-based clone detection in web applications, IEEE, 2014.
[45]
A. Lozano, F. Jaafar, K. Mens, Y. Guhneuc, Clones and macro co-changes, Electron. Commun. Eur. Assoc. Softw. Sci. Technol., 63 (2014) 1-14.
[46]
A. Lozano, M. Wermelinger, Assessing the effect of clones on changeability, IEEE, 2008.
[47]
A. Marcus, D. Poshyvanyk, R. Ferenc, Using the conceptual cohesion of classes for fault prediction in object-oriented systems, IEEE Trans. Softw. Eng., 34 (2008) 287-300.
[48]
T.J. McCabe, A complexity measure, IEEE Computer Society Press, Los Alamitos, CA, USA, 1976.
[49]
N. Moha, Y.-G. Guhneuc, L. Duchien, A.-F. Le Meur, DECOR: a method for the specification and detection of code and design smells, Trans. Softw. Eng., 36 (2010) 20-36.
[50]
A. Monden, D. Nakae, T. Kamiya, S.-i. Sato, K.-i. Matsumoto, Software quality analysis by code clones in industrial legacy software, IEEE, 2002.
[51]
R. Moser, W. Pedrycz, G. Succi, A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction, ACM, New York, NY, USA, 2008.
[52]
S. Neuhaus, T. Zimmermann, C. Holler, A. Zeller, Predicting vulnerable software components, ACM, 2007.
[53]
M. Ohba, Software reliability analysis models, IBM J. Res. Dev., 28 (1984) 428-443.
[54]
T. Ostrand, E. Weyuker, R. Bell, Predicting the location and number of faults in large software systems, IEEE Trans. Softw. Eng., 31 (2005) 340-355.
[55]
T. Pedersen, Fishing for exactness, In Proceedings of the South-Central SAS Users Group Conference, cmp-lg/9608010 (1996) 188-200.
[56]
D. Ratiu, S. Ducasse, T. Grba, R. Marinescu, Using history information to improve design flaws detection, IEEE Computer Society, 2004.
[57]
D. Rattan, R. Bhatia, M. Singh, Software clone detection: a systematic review, Inf. Softw. Technol., 55 (2013) 1165-1199.
[58]
A.J. Riel, Object-Oriented Design Heuristics, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1996.
[59]
D. Romano, P. Raila, M. Pinzger, F. Khomh, Analyzing the impact of antipatterns on change-proneness using fine-grained source code changes, Proceedings of the 2012 Working Conference on Reverse Engineering (2012) 437-446.
[60]
D. Settas, A. Cerone, S. Fenz, Enhancing ontology-based antipattern detection using Bayesian networks, Expert Syst. Appl., 39 (2012) 9041-9053.
[61]
D.J. Sheskin, Handbook of Parametric and Nonparametric Statistical Procedures, Chapman & Hall/CRC, 2007.
[62]
J. liwerski, T. Zimmermann, A. Zeller, When do changes induce fixes?, SIGSOFT Softw. Eng. Notes, 30 (2005) 1-5.
[63]
R. Subramanyam, M.S. Krishnan, Empirical analysis of CK metrics for object-oriented design complexity: implications for software defects, IEEE Trans. Softw. Eng., 29 (2003) 297-310.
[64]
B.F. Webster, Pitfalls of Object Oriented Development, M & T Books, 1995.
[65]
A. Yamashita, L. Moonen, To what extent can maintenance problems be predicted by code smell detection? an empirical study, Inf. Softw. Technol., 55 (2013) 2223-2242.
[66]
W. Yang, Identifying syntactic differences between two programs, Softw. Pract. Exp., 21 (1991) 739-755.
[67]
R.K. Yin, Case Study Research: Design and Methods, SAGE Publications, London, 2002.
[68]
A.T.T. Ying, G.C. Murphy, R. Ng, M.C. Chu-Carroll, Predicting source code changes by mining change history, Trans. Softw. Eng., 30 (2004) 574-586.
[69]
T. Zimmermann, P. Weisgerber, S. Diehl, A. Zeller, Mining version histories to guide software changes, IEEE Computer Society, 2004.
  1. Analyzing software evolution and quality by extracting Asynchrony change patterns

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image Journal of Systems and Software
    Journal of Systems and Software  Volume 131, Issue C
    September 2017
    569 pages

    Publisher

    Elsevier Science Inc.

    United States

    Publication History

    Published: 01 September 2017

    Author Tags

    1. Anti-patterns
    2. Change patterns
    3. Clones
    4. Fault-proneness
    5. Software quality

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 0
      Total Downloads
    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 29 Nov 2024

    Other Metrics

    Citations

    View Options

    View options

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media