본문 바로가기
KERD
논문KCI 등재

소스 코드 품질 향상을 위한 리팩토링 기법 및 도구 분석

Analysis of Refactoring Techniques and Tools for Source Code Quality Improvement

0

조회

0

다운로드

3

인용

0

참고문헌

키워드

초록

IT 기술 및 비즈니스의 급속한 발전에 따라 새로운 서비스를 고객에게 제공하기 위한 노력이 증가하고 있으며, 신속한 서비스 제공을 위해 기존의 레거시 시스템에 대한 개선 및 확장이 빈번히 발생하고 있다. 이로 인하여 기존 레거시 시스템에 대한 소스 코드의 품질 확보는 서비스 요구에 신속히 대응할 수 있는 핵심적인 기술 요소가 되었다. 리팩토링은 기존 레거시 코드에 대한 품질을 확보하기 위한 공학적 기술로서, 부가가치를 제공하는 레거시 시스템의 개선 및 확장에 필수적이다. 본 논문에서는 레거시 시스템의 소스 코드 품질 향상을 위한 기존의 리팩토링 기법과 지원 도구에 대한 조사 분석을 통해 리팩토링 기법과 도구에 대한 특성을 제안한다. 제안하는 특성을 기반으로 서비스 개발자가 레거시 시스템의 소스 코드 품질 향상을 위하여 리팩토링을 수행하고자 하는 경우, 어떠한 기법과 도구를 활용할 것인가에 대한 가이드라인을 제공받을 수 있다. 이를 통해 보다 정확하고 시행착오 없는 레거시 시스템의 소스 코드 품질을 향상시킬 수 있으며, 새로운 서비스에 대한 신속한 대응도 가능하게 될 것이다.

Abstract

Along with the rapid development of IT technology and business services, the effort to provide new services to the customers has been increasing, and also the improvement and enhancement of legacy systems are continuously occurring for rapid service delivery. In this situation, the quality assurance of the source code for the legacy system became a key technical elements that can quickly respond to the service needs. Refactoring is an engineering technique to ensure the quality for the legacy code, and essential for the improvement and extension of the legacy system in order to provide value-added services. This paper proposes some features of refactoring techniques through surveying and analyzing the existing refactoring techniques and tools to enhance source code quality. When service developers want to refactor the source code of the legacy system to enhance code quality, our proposed features may provide with the guidance on what to use any technique and tool in their work. This can improve the source code quality with correct refactoring and without trial and error, and will also enable rapid response to new services.

참고문헌 (35)

  1. A. Deursen, "Research Issues in the Renovation of Legacy Systems", Proceedings of the International Conference on Fundamental Approaches to Software Engineering, pp.1~21 (1999)
  2. A. Jatain, "Reengineering Techniques for Object Oriented Legacy Systems", International Journal of Software Engineering and Its Applications, 9(1), pp.35~52 (2015)
  3. G. Nascimento, "A Method for Rewriting Legacy Systems using Business Process Management Technology", Proceedings of the the 11th International Conference on Enterprise Information Systems, pp.1~6 (2009)
  4. P. Pirkelbauer, "“Source Code Rejuvenation is not Refactoring,” Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science(SOFSEM 2010)", LNCS, 5901, pp.639~650 (2010)
  5. E. Murphy-Hill, "How We Refactor, and How We Know It", Proceedings of the 31st International Conference on Software Engineering(ICSE’09), pp.287~297 (2009)
  6. M. Kim, "A Field Study of Refactoring Challenges and Benefits", Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering(FSE’12), (50), pp.1~11 (2012)
  7. M. Fowler, "Refactoring: Improving the Design of Existing Code" (2002), Addison Wesley
  8. J. D. Garcia, "Improving performance and maintainability through refactoring in C++ 11", Proceedings of the ACCU Conference, pp.1~20 (2016)
  9. A. Vetro, "Definition, Implementation and Validation of Energy Code Smells: an exploratory study on an embedded system", Proceedings of the Third International Conference on Smart Grids, Green Communications and IT Energy-aware Technologies, pp.34~39 (2013)
  10. 이제욱, "Energy Bad Smells 기반 소모전력 절감을 위한 코드 리팩토링 기법", 정보처리학회논문지. 소프트웨어 및 데이터 공학, 5(5), pp.209~220 (2016), 한국정보처리학회[DOI]
  11. J. Kim, "Techniques to Support Low-Power Characteristics in Embedded Software Development Process", Journal of Convergence Society for SMB, 1(1), pp.55~65 (2011)
  12. J. Lee, "Energy Analysis of System Constraints using SysML Parametric Diagram", Journal of Convergence Society for SMB, 2(2), pp.13~19 (2012)
  13. "Eclipse CDT" (2016)[URL]
  14. "JustCode" (2016)[URL]
  15. "Visual Assist" (2016)[URL]
  16. "ReSharper C++" (2016)[URL]
  17. W. F. Opdyke, "Refactoring: An Aid in Designing Application Frameworks and Evolving Object-Oriented Systems", Proceedings fo the ACM Symposium on Object Oriented Programming Emphasizing Practical Applications (1990)
  18. W. G. Griswold, "Program Restructuring as an Aid to Software Maintenance", Doctor, pp.1991
  19. W. F. Opdyke, "Refactoring Object-Oriented Frameworks", Doctor, pp.1992
  20. A. Garrido, "Refactoring C with Conditional Compilation", Proceedings of the 18th IEEE International Conference on Automated Software Engineering, pp.1~4 (2003)
  21. L. Hunt, "C# Coding Standards for .NET", Document Version, ~ (2007)
  22. M. Gatrell, "Empirical support for two refactoring studies using commercial C#software", Proceedings of the 13th International Conference on Evaluation & Assessment in Software Engineering, pp.1~10 (2009)
  23. "Adopting Modern Objective-C: Guide and Sample Code" (2014)[URL]
  24. M. Schafer, "“Correct Refactoring of Concurrent Java Code,”Proceedings of the 24th European conference on Object-oriented programming(ECOOP ‘10)", LNCS, 6183, pp.225~249 (2010)
  25. D. Dig, "Refactoring Sequential Java Code for Concurrency via Concurrent Libraries", Proceedings of the 31st International Conference on Software Engineering, pp.397~407 (2009)
  26. C. W. Fraser, "Analyzing and Compressing Assembly Code", Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction(SIGPLAN ’84), 19(8), pp.117~121 (1984)
  27. A. Fog, "Optimizing subroutines in assembly language" (2015), Technical University of Denmark
  28. "Eclipse JDT" (2016)[URL]
  29. "Refactor! for C++" (2016)[URL]
  30. "Xcode" (2016)[URL]
  31. "NetBeans" (2016)[URL]
  32. "Compositional Refactoring" (2016)[URL]
  33. "AutoRefactor" (2016)[URL]
  34. "Refactory" (2016)[URL]
  35. "Spartan Refactoring" (2016)[URL]

관련 논문AI추천

이 간행물의 다른 논문 (20건)