DOI QR코드

DOI QR Code

임베디드 소프트웨어의 에너지 효율성과 언어 변환 지원을 위한 코드 리팩토링 기법 확장

Extension of Code Refactoring Technique to Support Energy Efficiency and Language Conversion of Embedded Software

  • 남승우 (충북대학교 컴퓨터과학과) ;
  • 홍장의 (충북대학교 컴퓨터과학과)
  • Nam, Seungwoo (Department of Computer Science, Chungbuk National University) ;
  • Hong, Jang-Eui (Department of Computer Science, Chungbuk National University)
  • 투고 : 2018.04.03
  • 심사 : 2018.04.20
  • 발행 : 2018.04.30

초록

리팩토링은 기존 레거시 코드에 대한 품질을 확보하기 위한 공학적 기술로서, 프로그램의 기능은 변하지 않으면서 내부 구조를 개선하는 작업이다. 다양한 오픈 소스 소프트웨어가 재사용되면서, 기술적 이유 또는 시장 요구로 인하여 프로그래밍 언어 변환을 통한 소스 코드 재사용이 점진적으로 요구되고 있다. 이러한 상황에서 에너지 효율성을 고려하는 언어 변환 리팩토링 기법은 임베디드 소프트웨어 개발의 생산성은 물론 품질 향상을 위한 중요한 수단으로 여겨지고 있다. 본 논문에서는 기존에 제시된 에너지 절감형 리팩토링 기법에 추가하여 프로그래밍 언어의 문법 및 구조의 비교와 매핑을 통해 다른 언어로 변환하는 코드 리팩토링 기법을 제시하였다. 제안하는 리팩토링 기법의 활용은 소프트웨어 개발 언어의 환경변화에 대처하고, 기존 코드의 재사용을 높임으로써 신속한 소프트웨어 개발 및 품질 향상을 통한 제품의 경쟁력 향상을 기대할 수 있다.

Refactoring is an engineering technique for securing the quality of existing legacy code, improving the internal structure without changing the functionality of the software. Along with the reuse of open source software, reuse of source code through programming language conversion is increasingly required due to technical or market requirements. In this situation, the refactoring technique including language conversion as well as energy efficiency is considered to be an important means for improving the productivity and the quality of embedded software development. This paper proposes a code refactoring technique that converts the grammar and structure of a programming language into those of a different language through comparison and mapping, in addition to the existing energy efficient refactoring technique. The use of the proposed refactoring technique can expect to improve the competitiveness of the product through rapid software development and quality improvement by coping with the environment change of the software development language and enhancing the reuse of the existing code.

키워드

참고문헌

  1. A. Deursen1, P. Klint & C. Verhoef. (1999). Research Issues in the Renovation of Legacy Systems. Proceedings of International Conference on Fundamental Approaches to Software Engineering, 1-21. DOI : 10.1007/978-3-540-49020-3_1
  2. A. Jatain & D. Gaur. (2015). Reengineering Techniques for Object Oriented Legacy Systems. International Journal of Software Engineering & Its Applications, 9(1), 35-52. DOI : 10.1145/260303.260313
  3. G. Nascimento & C. Iochpe. (2009). A Method for Rewriting Legacy Systems using Business Process Management Technology. Proceedings of the 11th International Conference on Enterprise Information Systems, 1-6.
  4. P. Pirkelbauer, D. Dechev & B. Stroustrup. (2010). Source Code Rejuvenation is not Refactoring. Proceedings of the 36th Conference on Current Trends in Theory & Practice of Computer Science(LNCS 5901), 639-650. DOI : 10.1007/978-3-642-11266-9_53
  5. E. Murphy-Hill, C. Parnin & A. P. Black. (2009). How We Refactor & How We Know it. Proceedings of the 31st International Conference on Software Engineering(ICSE'09), 287-297. DOI : 10.1109/icse.2009.5070529
  6. M. Kim, T. Zimmermann & N. Nagappan. (2012). A Field Study of Refactoring Challenges & Benefits. Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering(FSE’12), 50, 1-11. DOI : 10.1145/2393596.2393655
  7. M. Fowler, K. Beck, J. Brant, W. Opdyke & D. Roberts. (2002). Refactoring: Improving the Design of Existing Code. San Francisco : Addison-Wesley. DOI : 10.1007/3-540-45672-4_31
  8. D. Kim, Y. Jung, & J. Hong. (2016). Analysis of Refactoring Techniques & Tools for Source Code Quality Improvement. Journal of Convergence for Information Technology, 6(4), 137-150. DOI : 10.22156/cs4smb.2016.6.4.137
  9. W. G. Griswold. (1991). Program Restructuring as an Aid to Software Maintenance. Doctoral Dissertation, University of Washington, Seattle.
  10. W. F. Opdyke. (1992). Refactoring Object- Oriented Framework. Doctoral Dissertation. University of Illinois at Urbana-Champaign, USA.
  11. J. D. Garcia & B. Stroustrup. (2016). Improving performance & maintainability through refactoring in C++. Proceedings of the ACCU Conference, 1-20.
  12. A. Vetro, L. Ardito, G. Procaccianti & M. Morisio. (2013). Definition, Implementation & Validation of Energy Code Smells: an exploratory study on an embedded system. Proceedings of the Third International Conference on Smart Grids, Green Communications & IT Energy-aware Technologies, 34-39.
  13. J. Lee, D. Kim, & J. Hong. (2016). Code Refactoring Techniques based on Energy Bad Smells for Reducing Energy Consumption. Journal of KIPS transactions on software & data engineering, 5(5), 209-220. DOI : 10.3745/ktsde.2016.5.5.209
  14. S. Lee & H. Yoo. (2017). System Optimization Technique using Crosscutting Concern. Journal of Digital Convergence, 15(3), 181-186. DOI : 10.14400/jdc.2017.15.3.181
  15. Y. S. Choi & J. E. Hong. (2017). Designing Software Architecture for Reusing Open Source Software. Journal of Convergence for Information Technology, 7(2), 67-76. DOI : 10.22156/cs4smb.2017.7.2.067
  16. J. Lee, Y. Lee & M. Lee. (2001). Extraction of Classes & Inheritance from Procedural Software. Journal of KISS : Software & Applications, 28(9), 612-628.
  17. J. P. Kim, D. H. Kim & J. E. Hong. (2011). Embedded software, Low-power software, Power reduction technique. Journal of Convergence for Information Technology, 1(1), 55-65.
  18. Wikipedia. (2017). Procedural Programming. Wikipedia. https://en.wikipedia.org/wiki/Procedural_programming
  19. Wikipedia. (2017). Object-oriented Programming. Wikipedia. https://en.wikipedia.org/wiki/Object-oriented_programmng
  20. TIOBE. (2018). TIOBE index for March 2018. TIOBE. https://www.tiobe.com/tiobe-index/
  21. L. Qiu. (1999). Programming Language Translation. Doctoral Dissertation. Department of Computer Science, Cornell University, New York.
  22. D. Kim, J. Hong, I. Yoon & S. Lee. (2016). Code refactoring techniques for reducing energy consumption in embedded computing environment. Cluster Computing Journal, 1-17. DOI : 10.1007/s10586-016-0691-5
  23. P. A. Bernstein. (2003). Applying Model Management to Classical Meta Data Problems. Proceedings of the 2003 CIDR Conference, 1-12.
  24. J. J. Park, D. H. Kim & J. E. Hong. (2014). Analysis of Energy Efficiency for Code Refactoring Techniques. Journal of KIPS transactions on software & data engineering, 3(3), 109-118. DOI : 10.3745/ktsde.2014.3.3.109