$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

OCL을 이용한 자동화된 코드스멜 탐지와 리팩토링
Automated Code Smell Detection and Refactoring using OCL 원문보기

정보처리학회논문지. The KIPS transactions. Part D. Part D, v.15D no.6, 2008년, pp.825 - 840  

김태웅 (인제대학교 컴퓨터공학부) ,  김태공 (인제대학교 컴퓨터공학부)

초록
AI-Helper 아이콘AI-Helper

리팩토링은 내부적으로는 시스템의 품질을 개선하고, 외부적으로는 시스템의 기능을 유지하는 일종의 소프트웨어를 변경하는 과정이다. 이러한 리팩토링을 적용하여 기존 소스코드를 개선하기 위해서는 개선할 사항이 무엇인지를 아는 것이 우선이다. 이를 위해 Martin Fowler와 Kent Beck은 코드속의 나쁜 냄새(코드스멜)를 식별할 수 있는 방법을 제시 하였다. 또한 코드스멜을 탐지하고 어디에 어떤 리팩토링을 적용할 것인가를 결정하는 문제와 관련된 몇몇 연구가 발표되었다. 그러나 이러한 연구들은 코드스멜에 대한 명확한 표현이 부족하거나 한정된 코드스멜만을 탐지하는 단점이 있다. 그리고 리팩토링을 적용할 경우 행위보존을 위한 선행조건들의 표현방법이 리팩토링 절차에 포함되어 있거나 정형화되지 않아 행위보존의 모호함이 발생되는 단점을 가지고 있다. 이에 본 논문에서는 OCL을 이용하여 코드스멜의 정보를 정확히 명세화하고, OCL 번역기를 통해 코드스멜을 자동으로 탐지하여 리팩토링하는 프레임워크를 제안한다. 또한 적용사례를 통하여 자바소스코드속의 코드스멜을 OCL로 명세화하여 자동탐지하고, 리팩토링을 적용해 봄으로써 활용성과 효용성을 검증해본다.

Abstract AI-Helper 아이콘AI-Helper

Refactoring is a kind of software modification process that improves system qualities internally but maintains system functions externally. What should be improved on the existing source codes should take precedence over the others in such a modification process using this refactoring. Martin Fowler...

주제어

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

문제 정의

  • 리팩토링은 프로그램의 행위를 보존하면서 프로그램의 가독성, 구조, 성능, 유지보수성 등을 향상시키는 방법이다. 시스템의 기능을 유지하면서 시스템의 이해도를 높임과 동시에 유지보수를 보다 쉽게 할 수 있도록 내부 구조를 변경하는 것이다[1]. 이러한 리팩토링의 결과로 코드의 확장성, 모듈화, 재사용성, 유지보수성 같은 품질을 개선하여 개발의 속도를 높이고 코드 복잡도를 낮출 수 있다[2].
  • <표 1>과 같이 단순 코드스멜은 하나의 클래스에서 유추 가능한 반면 유도된 코드스멜은 여러 클래스간의 관계(상속 관계, 인스턴스, 메소드의 사용 및 필드의 사용 등)에서 정보를 추출하여 도출 가능하다. 이러한 코드스멜을 탐지하기 위한 여러 가지 연구들이 있으며, 그 장단점에 대해 알아본다.
  • 이번 장에서는 관련연구로서 코드스멜의 정의 및 종류에 대해 알아보고, 본 논문에서 제안한 코드스멜 탐지 및 리팩토링과 관련된 연구들에 대해 살펴본다.
  • 이에 본 논문에서는 OCL을 이용하여 코드스멜의 정보를 정확히 명세화하고, OCL번역기를 통해 코드스멜을 자동으로 탐지하여 리팩토링하는 프레임워크를 제안하였다.

가설 설정

  • 가) t에서 사용하지 않는 필드이어야 한다.
본문요약 정보가 도움이 되었나요?

질의응답

핵심어 질문 논문에서 추출한 답변
코드스멜은 무엇인가? 코드스멜은 소스코드에서 문제(Problem)가 될 수 있는 부분을 나타낸다. 그러나 코드스멜은 컴파일시에 나타나는 문법적인 오류나 경고와는 다르다. 예를 들어 나쁜 소프트웨어 디자인 또는 나쁜 프로그래밍 습관으로 인해 발생하는 소스코드를 말한다. 이러한 잘못된 프로그래밍 습관이나 디자인은 소프트웨어에 새로운 기능이 추가되거나 플랫폼의 변경시 소프트웨어 개발 비용이 증가되는 악영향을 가져온다.
리팩토링은 어떤 작업인가? 리팩토링은 시스템의 기능을 유지하며 소스코드의 확장성, 모듈화, 재사용성, 유지보수성과 같은 품질을 개선하는 과정으로 일종의 소프트웨어를 변경하는 작업이다. 이러한 리팩토링을 적용하여 기존 소스코드를 개선하기 위해서는 개선할 사항이 무엇인지를 아는것이 우선이다.
본 논문에서 OCL을 이용하여 코드스멜의 정보를 정확히 명세화하고, OCL번역기를 통해 코드스멜을 자동으로 탐지하여 리팩토링하는 프레임워크를 제안하기 위하여 무엇을 하였는가? 이를 위하여 클래스들간의 관계, 속성 및 메소드에 대한 바인딩 정보를 표현하기 위한 JavaEAST모델을 제안하고, 이를 기반으로 코드스멜을 OCL로 정의하였다. 이는 나쁜 냄새에 대한 명확한 명세가 이루어진다는 장점 뿐만 아니라, 향후 새로운 코드스멜에 대한 추가 및 수정사항 발생시 OCL만을 정의하여 가능하게 함으로써 생산성 향상을 가져온다.
질의응답 정보가 도움이 되었나요?

참고문헌 (21)

  1. Fowler, M. Refactoring. “Improving the Design of Existing Programs,” Addison-Wesley. 1999 

  2. Mens, T., Tourwe, T. “A Survey of Software Refactoring,” IEEE Transactions on Software Engineering, February, Vol.30, No.2. pp.126-139, 2004 

  3. Joshua Kerievsky, “Refactoring to Patterns,” Addison Wesley, 2005 

  4. Martin Fowler, “Refactoring:Improving the Design Existing Code,” Addison Wesley, 1999 

  5. Stefan Slinger, “Code Smell Detection in Eclipse,” Delft University of Technology, March, 2005 

  6. Yoshio Kataoka, Michael D. Ernst, William G. Griswold, and David Notkin, “Automated Support for Program Refactoring using Invariants,” Proc. Int. Conf. On Software Maintenance, pp.736-743, 2001 

  7. Stephane Ducasse, Matthias Rieger, and Serge Demeyer, “A language independent approach for detecting duplicated code,” In Hongji Yang and Lee white, editors, Proc. Int'l Conf. Software Maintenance, IEEE Computer Society Press, pp.109-118, September, 1999 

  8. Frank Simon, Frank SteinbruUckner, and Clause Lewerent, “Metrics Based Refactoring,” In Proc. 5th European Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, pp.30-38, 2001 

  9. Object Management Group, “Object Constraint Language Specification, Version 2.0,” http://www.omg.org/technology/ documents/formal/ocl.htm 

  10. MoDisco, “MoDisco Tool- Java Abstract Syntax Discovery Tool,” http://www.eclipse.org/gmt/modisco/toolBox/Java AbstractSyntax/ 

  11. Object Management Group, “MOF 2.0/XMI Mapping Specification, V2.1.1,” http://www.omg.org/technology/documents/ formal/xmi.htm 

  12. Eclipse, “OCL for EMF,” http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-200.html#, updated 2004 

  13. Eclipse, “Eclipse Modeling Framework Project,” http://www.eclipse.org/modeling/emf/?projectemf 

  14. E. van Emden and L.Moonen, “Java Quality Assurance by Detecting Code Smells,” In Proc. 9th Working Conference on Reverse Engineering IEEE Computer Society Press, October, 2002 

  15. R.C. Holt, “Structural Manipulations of Software Architecture using Tarski Relational Algebra,” In Proc. 5th Working Conference on Reverse Engineering (WCRE'98), pp.210-219, 1998 

  16. Narbor C. Mendonca, Paulo Henrique M. Maia, Leonardo A. Fonesca, Rossana M.C. Andrade, “RefaX : A Refactoring Framework Based on XML,” Proceedings of the 20th IEEE International Conference on Software Maintenamce (ICSM'04), 2004 

  17. Mammas, E. and Kontogiannis, C., “Towards Portable Source Code Representation using XML,” in Proc. of the 7th Working Conference on Reverse Engineering (WCRE, 00), Brisbane, Australia, pp.172-180, November, 2000 

  18. W3C, “XQuery 1.0 : An XML Query Language,” W3C Recommendation Draft 12 November 2003, Available at http://www.w3c.org/TR/xquery/, 2003 

  19. Roberts, D.B, “Practical Analysis for Refactoring,” Ph.D. Thesis, Unversity of Illinois at Urbana-Chanpaign, 1999 

  20. Mel O Cinneide, Automated Application of Design Patterns : A Refactoring Approach, Department of Computer Science, Trinity College Dublin, October, 2000 

  21. Raul Marticorena, Carlos Lopez, Yania Crespo, Francisco Javier Perez, “Reuse based Refactoring Tools,” Proceedings of 1st Workshop Refactorign Tools(WRT'07), pp.21-22, July, 2007 

저자의 다른 논문 :

관련 콘텐츠

오픈액세스(OA) 유형

BRONZE

출판사/학술단체 등이 한시적으로 특별한 프로모션 또는 일정기간 경과 후 접근을 허용하여, 출판사/학술단체 등의 사이트에서 이용 가능한 논문

섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로