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

skip to main content
10.1145/1595808.1595827acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Perspectives on automated correction of bad smells

Published: 24 August 2009 Publication History

Abstract

Keeping a software system conformant with a desired architecture and consistent with good design principles is a recurring task during the software evolution process. Deviations from good design principles can manifest in the form of bad smells: problems in the system's structure that can negatively affect software quality factors.
Many authors have worked in identifying bad smells and in removing them with refactorings: tools have been built to suggest refactorings; successful approaches to detect bad smells have been developed, etc. We present a comprehensive and historical review on this subject, in order to model the current state of the art and to identify the open challenges, current trends and research opportunities.
We also propose a technique based on automated planning, aimed at taking one step forward in the automatic improvement of a system's structure. This proposal will allow computing complex refactoring sequences which can be directed to the achievement of a certain objective, such as the correction of bad smells.

References

[1]
iPlasma. LOOSE Research Group; http://loose.upt.ro/iplasma.
[2]
The Ptidej tool suite. Includes the DECOR method. The Ptidej team; École Polytechnique Montréal, Université de Montréal. http://ptidej.dyndns.org.
[3]
R. S. Arnold. Software Restructuring. 77(4):607--617, Apr 1989. Proceedings of the IEEE,
[4]
K. Beck and M. Fowler. Bad Smells in Code, chapter 3. In Refactoring: Improving the Design of Existing Code {13}, 1999.
[5]
K. Beck and M. Fowler. Big Refactorings, chapter 12. In Refactoring: Improving the Design of Existing Code {13}, 1999.
[6]
T. Bodhuin, G. Canfora, and L. Troiano. Sormasa: A tool for suggesting model refactoring actions by metrics-led genetic algorithm. In 1st Workshop on Refactoring Tools (WRT'07), number 2007-8, pages 23--24, July 2007.
[7]
W. H. Brown, R. C. Malveau, and T. J. Mowbray. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, March 1998.
[8]
L. Chung, B. A. Nixon, E. Yu, and J. Mylopoulos. Non-Functional Requirements in Software Engineering, volume 5 of International Series in Software Engineering. Springer, October 1999.
[9]
Y. Crespo. Incremento del potencial de reutilización del software mediante refactorizaciones. PhD thesis, Universidad de Valladolid, 2000.
[10]
Y. Crespo, C. López, E. Manso, and R. Marticorena. From bad smells o to refactoring, metrics smoothing the way, chapter VII, pages 193--249. Object-Oriented Design Knowledge. Principles, Heuristics and Best Practices. Idea Group Publishing, 2006.
[11]
D. Dig, K. Manzoor, R. E. Johnson, and T. N. Nguyen. Effective software merging in the presence of object-oriented refactorings. IEEE Transactions on Software Engineering, 34(3):321--335, 2008.
[12]
S. G. Eick, T. L. Graves, A. F. Karr, J. S. Marron, and A. Mockus. Does code decay? assessing the evidence from change management data. IEEE Transactions on Software Engineering, 27(1):1--12, 2001.
[13]
M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts. Refactoring: Improving the Design of Existing Code. Object Technology Series. Addison-Wesley, 1999.
[14]
J. Frederick P. Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley Publishing Company, Reading, MA, USA, 1975.
[15]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison-Wesley Professional, January 1995.
[16]
T. Genssler, V. Kuttruff, and F. Brosig. Inject/J Software Transformation Language; -- Language Specification. Reference Manual, November 2007.
[17]
M. Ghallab, D. Nau, and P. Traverso. Automated Planning; Theory and Practice. Morgan Kaufmann, 2004.
[18]
W. G. Griswold and D. Notkin. Automated assistance for program restructuring. ACM Transactions on Software Engineering and Methodology, 2(3):228--269, 1993.
[19]
J. Kerievsky. Refactoring to Patterns. Addison-Wesley Signature Series. Addison-Wesley Professional, August 2004.
[20]
G. Kniesel. A logic foundation for conditional program transformations. Technical Report IAI-TR-2006-1, Computer Science Department III, University of Bonn, January 2006.
[21]
G. Kniesel and H. Koch. Static composition of refactorings. Science of Computer Programming, 52(1-3):9--51, 2004. Special issue on Program Transformation, edited by Ralf Lämmel, ISSN: 0167-6423, digital object identifier http://dx.doi.org/10.1016/j.scico.2004.03.002.
[22]
M. Lanza and R. Marinescu. Object-Oriented Metrics in Practice - Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems. Springer, 2006.
[23]
C. López, R. Marticorena, Y. Crespo, and J. Pérez. Towards a language independent refactoring framework. In 1st ICSOFT 06 International Conference on Software and Data Technologies. Setubal, Portugal. ISBN: 972-8865-69-4, volume 1, pages 165--170, sep 2006.
[24]
R. Marinescu. Detecting design flaws via metrics in object-oriented systems. In TOOLS '01: Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39), page 173, Washington, DC, USA, 2001. IEEE Computer Society.
[25]
T. Mens, G. Kniesel, and O. Runge. Transformation dependency analysis -- a comparison of two approaches. In R. Rousseau, C. Urtado, and S. Vauttier, editors, Actes des journées Langages et Modèles à Objets, LMO'06. Nîmes, 22-24 mars, pages 167--184. Hermès Lavoisier, 2006.
[26]
T. Mens, G. Taentzer, and O. Runge. Analysing refactoring dependencies using graph transformation. Software and Systems Modeling, 6(3):269--285, September 2007.
[27]
T. Mens and T. Tourwé. A survey of software refactoring. IEEE Transactions on Software Engineering, 30(2):126--139, 2004.
[28]
N. Moha. DECOR : Détection et correction des défauts dans les systèmes orientès objet. PhD thesis, Université des Sciences et Technologies de Lille; Université de Montréal, August 2008.
[29]
N. Moha, Y.-G. Guéhéneuc, A.-F. L. Meur, and L. Duchien. A domain analysis to specify design defects and generate detection algorithms. In J. L. Fiadeiro and P. Inverardi, editors, FASE, volume 4961 of Lecture Notes in Computer Science, pages 276--291. Springer, 2008.
[30]
E. Murphy-Hill and A. P. Black. Breaking the barriers to successful refactoring: observations and tools for extract method. In ICSE '08: Proceedings of the 30th International Conference on Software Engineering, pages 421--430, New York, NY, USA, 2008. ACM.
[31]
C. J. Neill and P. A. Laplante. Paying down design debt with strategic refactoring. IEEE Computer, 39(12):131--134, 2006.
[32]
W. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Department of Computer Science, University of Illinois at UrbanaChampaign, 1992. also Technical Report UIUCDCS-R-92-1759.
[33]
J. Pérez, O. Runge, and G. Taentzer. Specifying and analyzing program e refactorings with AGG. In 4th International Workshop on Graph-Based Tools: The Contest (GraBaTs 2008), September 2008. http://www. fots.ua.ac.be/events/grabats2008.
[34]
A. J. Riel. Object-Oriented Design Heuristics. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1996.
[35]
D. B. Roberts. Practical Analysis For Refactoring. PhD thesis, University of Illinois at Urbana-Champaign, 1999.
[36]
M. Salehie, S. Li, and L. Tahvildari. A metric-based heuristic framework to detect object-oriented design flaws. In Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC'06)IEEE, 2006. 4
[37]
L. Tahvildari and K. Kontogiannis. Improving design quality using meta-pattern transformations: a metric-based approach. Journal of Software Maintenance and Evolution: Research and Practice (JSME), 16(4-5):331--361, 2004.
[38]
A. Tiberghien, N. Moha, T. Mens, and K. Mens. Répertoire des défauts de conception. Technical Report 1303, University of Montreal, 2007.
[39]
G. Travassos, F. Shull, M. Fredericks, and V. R. Basili. Detecting defects in object-oriented designs: using reading techniques to increase software quality. In OOPSLA '99: Proceedings of the 14th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and applications, pages 47--56, New York, NY, USA, 1999. ACM.
[40]
A. Trifu. Towards Automated Restructuring of Object Oriented Systems. PhD thesis, Universität Karlsruhe (TH), Fakultät für Informatik, 2008.
[41]
A. Trifu and U. Reupke. Towards automated restructuring of object oriented systems. Software Maintenance and Reengineering, 2007. CSMR '07. 11th European Conference on, pages 39--48, March 2007.
[42]
A. Trifu, O. Seng, and T. Genssler. Automated design flaw correction in object-oriented systems. In C. Riva and G. Canfora, editors, proceedings of the 8th Conference on Software Maintenance and Reengineering, pages 174--183. IEEE Computer Society Press, March 2004.
[43]
W. C. Wake. Refactoring Workbook. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003.
[44]
B. F. Webster. Pitfalls of Object Oriented Development. M&T Books, 1st edition, 1995.

Cited By

View all
  • (2019)Linus's LawProceedings of the XVIII Brazilian Symposium on Software Quality10.1145/3364641.3364650(69-78)Online publication date: 28-Oct-2019
  • (2015)Co-Occurrence of Design Patterns and Bad Smells in Software SystemsProceedings of the annual conference on Brazilian Symposium on Information Systems: Information Systems: A Computer Socio-Technical Perspective - Volume 110.5555/2814058.2814114(347-354)Online publication date: 26-May-2015
  • (2015)On experimenting refactoring tools to remove code smellsScientific Workshop Proceedings of the XP201510.1145/2764979.2764986(1-8)Online publication date: 25-May-2015
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
IWPSE-Evol '09: Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops
August 2009
168 pages
ISBN:9781605586786
DOI:10.1145/1595808
  • General Chair:
  • Tom Mens,
  • Program Chairs:
  • Kim Mens,
  • Michel Wermelinger
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 24 August 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. automated planning
  2. bad smells
  3. refactoring

Qualifiers

  • Research-article

Conference

ESEC/FSE09
Sponsor:
ESEC/FSE09: Joint 12th European Software Engineering Conference
August 24 - 25, 2009
Amsterdam, The Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)1
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2019)Linus's LawProceedings of the XVIII Brazilian Symposium on Software Quality10.1145/3364641.3364650(69-78)Online publication date: 28-Oct-2019
  • (2015)Co-Occurrence of Design Patterns and Bad Smells in Software SystemsProceedings of the annual conference on Brazilian Symposium on Information Systems: Information Systems: A Computer Socio-Technical Perspective - Volume 110.5555/2814058.2814114(347-354)Online publication date: 26-May-2015
  • (2015)On experimenting refactoring tools to remove code smellsScientific Workshop Proceedings of the XP201510.1145/2764979.2764986(1-8)Online publication date: 25-May-2015
  • (2015)FaultBuster: An automatic code smell refactoring toolset2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM.2015.7335422(253-258)Online publication date: Sep-2015
  • (2014)Automated refactorings in Java using IntelliJ IDEA to extract and propogate constants2014 IEEE International Advance Computing Conference (IACC)10.1109/IAdCC.2014.6779532(1406-1414)Online publication date: Feb-2014
  • (2013)What programmers say about refactoring tools?Proceedings of the 2013 ACM workshop on Workshop on refactoring tools10.1145/2541348.2541357(33-36)Online publication date: 27-Oct-2013
  • (2013)Refactoring Planning for Design Smell CorrectionProceedings of the 2013 IEEE International Conference on Software Maintenance10.1109/ICSM.2013.98(572-577)Online publication date: 22-Sep-2013
  • (2012)Computation of refactoring plans from refactoring strategies using HTN planningProceedings of the Fifth Workshop on Refactoring Tools10.1145/2328876.2328880(24-31)Online publication date: 1-Jun-2012
  • (2010)A case study to evaluate the suitability of graph transformation tools for program refactoringInternational Journal on Software Tools for Technology Transfer (STTT)10.5555/3220879.322096312:3-4(183-199)Online publication date: 1-Jul-2010
  • (2010)A case study to evaluate the suitability of graph transformation tools for program refactoringInternational Journal on Software Tools for Technology Transfer10.1007/s10009-010-0153-y12:3-4(183-199)Online publication date: 14-Apr-2010

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media