Skip to main content
Erschienen in: Innovations in Systems and Software Engineering 1/2014

01.03.2014 | SI: QUATIC 2010

Investigating the evolution of code smells in object-oriented systems

verfasst von: Alexander Chatzigeorgiou, Anastasios Manakos

Erschienen in: Innovations in Systems and Software Engineering | Ausgabe 1/2014

Einloggen

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

Software design problems are known and perceived under many different terms, such as code smells, flaws, non-compliance to design principles, violation of heuristics, excessive metric values and anti-patterns, signifying the importance of handling them in the construction and maintenance of software. Once a design problem is identified, it can be removed by applying an appropriate refactoring, improving in most cases several aspects of quality such as maintainability, comprehensibility and reusability. This paper, taking advantage of recent advances and tools in the identification of non-trivial code smells, explores the presence and evolution of such problems by analyzing past versions of code. Several interesting questions can be investigated such as whether the number of problems increases with the passage of software generations, whether problems vanish by time or only by targeted human intervention, whether code smells occur in the course of evolution of a module or exist right from the beginning and whether refactorings targeting at smell removal are frequent. In contrast to previous studies that investigate the application of refactorings in the history of a software project, we attempt to analyze the evolution from the point of view of the problems themselves. To this end, we classify smell evolution patterns distinguishing deliberate maintenance activities from the removal of design problems as a side effect of software evolution. Results are discussed for two open-source systems and four code smells.

Sie haben noch keine Lizenz? Dann Informieren Sie sich jetzt über unsere Produkte:

Springer Professional "Wirtschaft+Technik"

Online-Abonnement

Mit Springer Professional "Wirtschaft+Technik" erhalten Sie Zugriff auf:

  • über 102.000 Bücher
  • über 537 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Maschinenbau + Werkstoffe
  • Versicherung + Risiko

Jetzt Wissensvorsprung sichern!

Springer Professional "Wirtschaft"

Online-Abonnement

Mit Springer Professional "Wirtschaft" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 340 Zeitschriften

aus folgenden Fachgebieten:

  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Versicherung + Risiko




Jetzt Wissensvorsprung sichern!

Springer Professional "Technik"

Online-Abonnement

Mit Springer Professional "Technik" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 390 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Maschinenbau + Werkstoffe




 

Jetzt Wissensvorsprung sichern!

Literatur
3.
Zurück zum Zitat Brown WH, Malveau RC, McCormick HW, Mowbray TJ (1998) AntiPatterns: refactoring software, architectures, and projects in crisis. Wiley, New York Brown WH, Malveau RC, McCormick HW, Mowbray TJ (1998) AntiPatterns: refactoring software, architectures, and projects in crisis. Wiley, New York
4.
Zurück zum Zitat Capiluppi A, Fernández-Ramil J (2007) A model to predict anti-regressive effort in Open Source Software. In: Proceedings of 23rd international conference on software maintenance (ICSM’2007), Paris, France, pp 194–203 Capiluppi A, Fernández-Ramil J (2007) A model to predict anti-regressive effort in Open Source Software. In: Proceedings of 23rd international conference on software maintenance (ICSM’2007), Paris, France, pp 194–203
5.
Zurück zum Zitat Chan YH (2004) Biostatistics 203. Survival analysis. Singap Med J 45:249–256 Chan YH (2004) Biostatistics 203. Survival analysis. Singap Med J 45:249–256
6.
Zurück zum Zitat Chatzigeorgiou A, Manakos A (2010) Investigating the evolution of bad smells in object-oriented code. In: Proceedings of 7th international conference on the quality of information and communications technology (QUATIC’2010), Porto, Portugal, pp 106–115 Chatzigeorgiou A, Manakos A (2010) Investigating the evolution of bad smells in object-oriented code. In: Proceedings of 7th international conference on the quality of information and communications technology (QUATIC’2010), Porto, Portugal, pp 106–115
7.
Zurück zum Zitat Demeyer S, Ducasse S, Nierstrasz O (2000) Finding refactorings via change metrics. In: Proceedings of 15th ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA’2000), Minneapolis, USA, pp 166–177 Demeyer S, Ducasse S, Nierstrasz O (2000) Finding refactorings via change metrics. In: Proceedings of 15th ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA’2000), Minneapolis, USA, pp 166–177
8.
Zurück zum Zitat Dig D, Comertoglu C, Marinov D, Johnson R (2006) Automated detection of refactorings in evolving components. In: Proceedings of 20th European conference on object-oriented programming (ECOOP’06), Nantes, France, pp 404–428 Dig D, Comertoglu C, Marinov D, Johnson R (2006) Automated detection of refactorings in evolving components. In: Proceedings of 20th European conference on object-oriented programming (ECOOP’06), Nantes, France, pp 404–428
9.
Zurück zum Zitat Di Penta M, Cerulo L, Aversano L (2009) The life and death of statically detected vulnerabilities: an empirical study. Inf Softw Technol 51:1469–1484CrossRef Di Penta M, Cerulo L, Aversano L (2009) The life and death of statically detected vulnerabilities: an empirical study. Inf Softw Technol 51:1469–1484CrossRef
10.
Zurück zum Zitat Fokaefs M, Tsantalis N, Chatzigeorgiou A, Sander J (2009) Decomposing object-oriented class modules using an agglomerative clustering technique. In: Proceedings of 25th IEEE international conference on software maintenance (ICSM’2009), Edmonton, Alberta, Canada, pp 93–101 Fokaefs M, Tsantalis N, Chatzigeorgiou A, Sander J (2009) Decomposing object-oriented class modules using an agglomerative clustering technique. In: Proceedings of 25th IEEE international conference on software maintenance (ICSM’2009), Edmonton, Alberta, Canada, pp 93–101
11.
Zurück zum Zitat Fowler M (1999) Refactoring: improving the design of existing code. Addison Wesley, Boston Fowler M (1999) Refactoring: improving the design of existing code. Addison Wesley, Boston
12.
Zurück zum Zitat Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison Wesley, Boston Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison Wesley, Boston
13.
Zurück zum Zitat Gîrba T, Ducasse S, Lanza M (2004) Yesterday’s weather: guiding early reverse engineering efforts by summarizing the evolution of changes. In: Proceedings of 20th IEEE international conference on software maintenance (ICSM’04), Chicago, USA, pp 40–49 Gîrba T, Ducasse S, Lanza M (2004) Yesterday’s weather: guiding early reverse engineering efforts by summarizing the evolution of changes. In: Proceedings of 20th IEEE international conference on software maintenance (ICSM’04), Chicago, USA, pp 40–49
14.
Zurück zum Zitat Hox JJ (2002) Multilevel analysis: techniques and applications. Routledge Academic, London Hox JJ (2002) Multilevel analysis: techniques and applications. Routledge Academic, London
16.
Zurück zum Zitat Kagdi H, Collard ML, Maletic JI (2007) A survey and taxonomy of approaches for mining software repositories in the context of software evolution. J Softw Main Evol R 19:77–131CrossRef Kagdi H, Collard ML, Maletic JI (2007) A survey and taxonomy of approaches for mining software repositories in the context of software evolution. J Softw Main Evol R 19:77–131CrossRef
17.
Zurück zum Zitat Khomh F, Di Penta M, Guéhéneuc YG (2009) An exploratory study of the impact of code smells on software change-proneness. In: Proceedings of 16th working conference on reverse engineering (WCRE’09), Lille, France, pp 75–84 Khomh F, Di Penta M, Guéhéneuc YG (2009) An exploratory study of the impact of code smells on software change-proneness. In: Proceedings of 16th working conference on reverse engineering (WCRE’09), Lille, France, pp 75–84
18.
Zurück zum Zitat Lehman MM, Ramil JF (2001) Rules and tools for software evolution planning and management. Ann Softw Eng 11:15–44CrossRefMATH Lehman MM, Ramil JF (2001) Rules and tools for software evolution planning and management. Ann Softw Eng 11:15–44CrossRefMATH
19.
Zurück zum Zitat Marinescu R (2001) Detecting design flaws via metrics in object-oriented systems. In: Proceedings of 39th international conference and exhibition on technology of object-oriented languages and systems (TOOLS’01), Santa Barbara, USA Marinescu R (2001) Detecting design flaws via metrics in object-oriented systems. In: Proceedings of 39th international conference and exhibition on technology of object-oriented languages and systems (TOOLS’01), Santa Barbara, USA
20.
Zurück zum Zitat Martin RC (2003) Agile software development: principles, patterns and practices. Prentice Hall, New Jersey Martin RC (2003) Agile software development: principles, patterns and practices. Prentice Hall, New Jersey
21.
Zurück zum Zitat Meyers TM, Binkley D (2007) An empirical study of slice-based cohesion and coupling metrics. ACM Trans Softw Eng Methodol 17:1–27CrossRef Meyers TM, Binkley D (2007) An empirical study of slice-based cohesion and coupling metrics. ACM Trans Softw Eng Methodol 17:1–27CrossRef
22.
Zurück zum Zitat Moha N (2007) Detection and correction of design defects in object-oriented designs. In: Proceedings of 22nd ACM SIGPLAN conference on object-oriented programming systems, languages and applications (OOPSLA’07), Doctoral Symposiums, Montreal, Canada, pp 949–950 Moha N (2007) Detection and correction of design defects in object-oriented designs. In: Proceedings of 22nd ACM SIGPLAN conference on object-oriented programming systems, languages and applications (OOPSLA’07), Doctoral Symposiums, Montreal, Canada, pp 949–950
23.
Zurück zum Zitat Moha N, Guéhéneuc YG, Duchien L, Le Meur AF (2010) DECOR: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36:20–36CrossRef Moha N, Guéhéneuc YG, Duchien L, Le Meur AF (2010) DECOR: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36:20–36CrossRef
24.
Zurück zum Zitat Murphy-Hill E, Black AP (2008) Refactoring tools: fitness for purpose. IEEE Softw 25:38–44CrossRef Murphy-Hill E, Black AP (2008) Refactoring tools: fitness for purpose. IEEE Softw 25:38–44CrossRef
25.
Zurück zum Zitat Murphy-Hill E, Parnin C, Black AP (2009) How we refactor, and how we know it. In: Proceedings of 31st IEEE international conference on software engineering (ICSE’09), Vancouver, Canada, pp 287–297 Murphy-Hill E, Parnin C, Black AP (2009) How we refactor, and how we know it. In: Proceedings of 31st IEEE international conference on software engineering (ICSE’09), Vancouver, Canada, pp 287–297
26.
Zurück zum Zitat Olbrich S, Cruzes DS, Basili V, Zazworka N (2009) The evolution and impact of code smells: a case study of two open source systems. In: Proceedings of 3rd international symposium on empirical software engineering and measurement (ESEM’09), Florida, USA, pp 390–400 Olbrich S, Cruzes DS, Basili V, Zazworka N (2009) The evolution and impact of code smells: a case study of two open source systems. In: Proceedings of 3rd international symposium on empirical software engineering and measurement (ESEM’09), Florida, USA, pp 390–400
27.
Zurück zum Zitat Parnas DL (1994) Software aging. In: Proceedings of 16th international conference on software engineering (ICSE’94), Sorrento, Italy, pp 279–287 Parnas DL (1994) Software aging. In: Proceedings of 16th international conference on software engineering (ICSE’94), Sorrento, Italy, pp 279–287
28.
Zurück zum Zitat Ratzinger J, Sigmund T, Gall HC (2008) On the relation of refactorings and software defect prediction. In: Proceedings of 5th working conference on mining software repositories (MSR’2008), Leipzig, Germany, pp 35–38 Ratzinger J, Sigmund T, Gall HC (2008) On the relation of refactorings and software defect prediction. In: Proceedings of 5th working conference on mining software repositories (MSR’2008), Leipzig, Germany, pp 35–38
29.
Zurück zum Zitat Riel AJ (1996) Object-oriented design heuristics. Addison-Wesley, Boston Riel AJ (1996) Object-oriented design heuristics. Addison-Wesley, Boston
30.
Zurück zum Zitat Slinger S (2005) Code smell detection in eclipse. Dissertation, Delft University of Technology Slinger S (2005) Code smell detection in eclipse. Dissertation, Delft University of Technology
31.
Zurück zum Zitat Trifu A, Marinescu R (2005) Diagnosing design problems in object oriented systems. In: Proceedings of 12th working conference on reverse engineering (WCRE’05), Pittsburgh, PA, pp 155–164 Trifu A, Marinescu R (2005) Diagnosing design problems in object oriented systems. In: Proceedings of 12th working conference on reverse engineering (WCRE’05), Pittsburgh, PA, pp 155–164
32.
Zurück zum Zitat Tsantalis N, Chatzigeorgiou A (2009) Identification of extract method refactoring opportunities. In: Proceedings of 13th European conference on software maintenance and reengineering (CSMR’09), Kaiserslautern, Germany, pp 119–128 Tsantalis N, Chatzigeorgiou A (2009) Identification of extract method refactoring opportunities. In: Proceedings of 13th European conference on software maintenance and reengineering (CSMR’09), Kaiserslautern, Germany, pp 119–128
33.
Zurück zum Zitat Tsantalis N, Chatzigeorgiou A (2009) Identification of move method refactoring opportunities. IEEE Trans Softw Eng 35: 347–367CrossRef Tsantalis N, Chatzigeorgiou A (2009) Identification of move method refactoring opportunities. IEEE Trans Softw Eng 35: 347–367CrossRef
34.
Zurück zum Zitat Tsantalis N, Chatzigeorgiou A (2010) Identification of refactoring opportunities introducing polymorphism. J Syst Softw 83:391–404 Tsantalis N, Chatzigeorgiou A (2010) Identification of refactoring opportunities introducing polymorphism. J Syst Softw 83:391–404
35.
Zurück zum Zitat Tsantalis N, Chatzigeorgiou A (2011) Ranking refactoring suggestions based on historical volatility. In: Proceedings of 15th European conference on software maintenance and reengineering (CSMR’2011), Oldenburg, Germany, pp 25–34 Tsantalis N, Chatzigeorgiou A (2011) Ranking refactoring suggestions based on historical volatility. In: Proceedings of 15th European conference on software maintenance and reengineering (CSMR’2011), Oldenburg, Germany, pp 25–34
36.
Zurück zum Zitat Van Emden E, Moonen L (2002) Java quality assurance by detecting code smells. In: Proceedings of 9th working conference on reverse engineering (WCRE’02), Richmond, VA, pp 97–106 Van Emden E, Moonen L (2002) Java quality assurance by detecting code smells. In: Proceedings of 9th working conference on reverse engineering (WCRE’02), Richmond, VA, pp 97–106
37.
Zurück zum Zitat Xing Z, Stroulia E (2006) Refactoring practice: how it is and how it should be supported—an eclipse case study. In: Proceedings of 22nd IEEE international conference on software maintenance (ICSM’06), Philadelphia, PA, pp 458–468 Xing Z, Stroulia E (2006) Refactoring practice: how it is and how it should be supported—an eclipse case study. In: Proceedings of 22nd IEEE international conference on software maintenance (ICSM’06), Philadelphia, PA, pp 458–468
38.
Zurück zum Zitat Xing Z, Stroulia E (2006) Refactoring detection based on UMLDiff change-facts queries. In: Proceedings of 13th working conference on reverse engineering (WCRE’06), Benevento, Italy, pp 263–274 Xing Z, Stroulia E (2006) Refactoring detection based on UMLDiff change-facts queries. In: Proceedings of 13th working conference on reverse engineering (WCRE’06), Benevento, Italy, pp 263–274
Metadaten
Titel
Investigating the evolution of code smells in object-oriented systems
verfasst von
Alexander Chatzigeorgiou
Anastasios Manakos
Publikationsdatum
01.03.2014
Verlag
Springer London
Erschienen in
Innovations in Systems and Software Engineering / Ausgabe 1/2014
Print ISSN: 1614-5046
Elektronische ISSN: 1614-5054
DOI
https://doi.org/10.1007/s11334-013-0205-z

Weitere Artikel der Ausgabe 1/2014

Innovations in Systems and Software Engineering 1/2014 Zur Ausgabe

Premium Partner