어스팩트 지향 프로그래밍은 시스템에서 크로스커팅 개념을 추출하고 소프트웨어 모듈화를 통하여 기능의 분산과 코드의 혼란을 해결하기 위한 패러다임이다. 현존하는 어스팩트 개발 방법은 크로스커팅 대상 영역을 추출에 어려움이 있기 때문에, 어스팩트 마이닝을 적용하기가 쉽지 않다. 어스팩트 마이닝에서는 기존 프로그램의 리팩토링 요소를 크로스커팅 영역으로 변환하는 기술이 필수적이다. 본 논문에서는 리팩토링에 적합한 크로스커팅 영역 자동 추출을 위한 시스템에서 크로스커팅 개념을 추출하기 위한 어스팩트 마이닝 방법을 제안한다. 소스 모듈의 추상 구문구조 명세를 이용하여, 모듈의 구조적 중복 관계 요소를 추출한다. Apriori 알고리즘을 통하여 중복 구문트리를 생성하고, 크로스커팅 영역 대상인 중복된 소스 모듈을 자동 생성, 최적화 할 수 있다. Berkeley Yacc의 berbose.c 모듈을 제안하는 마이닝 프로세스에 적용해 본 결과, 원본 대비 9.47%의 길이와 부피의 감소하였고, CCFinder 대비 4.92%의 길이 감소, 5.11%의 부피 감소 효과를 확인하였다.
어스팩트 지향 프로그래밍은 시스템에서 크로스커팅 개념을 추출하고 소프트웨어 모듈화를 통하여 기능의 분산과 코드의 혼란을 해결하기 위한 패러다임이다. 현존하는 어스팩트 개발 방법은 크로스커팅 대상 영역을 추출에 어려움이 있기 때문에, 어스팩트 마이닝을 적용하기가 쉽지 않다. 어스팩트 마이닝에서는 기존 프로그램의 리팩토링 요소를 크로스커팅 영역으로 변환하는 기술이 필수적이다. 본 논문에서는 리팩토링에 적합한 크로스커팅 영역 자동 추출을 위한 시스템에서 크로스커팅 개념을 추출하기 위한 어스팩트 마이닝 방법을 제안한다. 소스 모듈의 추상 구문구조 명세를 이용하여, 모듈의 구조적 중복 관계 요소를 추출한다. Apriori 알고리즘을 통하여 중복 구문트리를 생성하고, 크로스커팅 영역 대상인 중복된 소스 모듈을 자동 생성, 최적화 할 수 있다. Berkeley Yacc의 berbose.c 모듈을 제안하는 마이닝 프로세스에 적용해 본 결과, 원본 대비 9.47%의 길이와 부피의 감소하였고, CCFinder 대비 4.92%의 길이 감소, 5.11%의 부피 감소 효과를 확인하였다.
Aspect-oriented programming is the paradigm which extracts crosscutting concern from a system and solves scattering of a function and confusion of a code through software modularization. Existing aspect developing method has a difficult to extract a target area, so it is not easy to apply aspect min...
Aspect-oriented programming is the paradigm which extracts crosscutting concern from a system and solves scattering of a function and confusion of a code through software modularization. Existing aspect developing method has a difficult to extract a target area, so it is not easy to apply aspect mining. In an aspect minning, it is necessary a technique that convert existing program refactoring elements to crosscutting area. In the paper, it is suggested an aspect mining technique for extracting crosscutting concern in a system. Using abstract syntax structure specification, extract functional duplicated relation elements. Through Apriori algorithm, it is possible to create a duplicated syntax tree and automatic creation and optimization of a duplicated source module, target of crosscutting area. As a result of applying module of Berkeley Yacc(berbose.c) to mining process, it is confirmed that the length and volume of program has been decreased of 9.47% compared with original module, and it has been decreased of 4.92% in length and 5.11% in volume compared with CCFinder.
Aspect-oriented programming is the paradigm which extracts crosscutting concern from a system and solves scattering of a function and confusion of a code through software modularization. Existing aspect developing method has a difficult to extract a target area, so it is not easy to apply aspect mining. In an aspect minning, it is necessary a technique that convert existing program refactoring elements to crosscutting area. In the paper, it is suggested an aspect mining technique for extracting crosscutting concern in a system. Using abstract syntax structure specification, extract functional duplicated relation elements. Through Apriori algorithm, it is possible to create a duplicated syntax tree and automatic creation and optimization of a duplicated source module, target of crosscutting area. As a result of applying module of Berkeley Yacc(berbose.c) to mining process, it is confirmed that the length and volume of program has been decreased of 9.47% compared with original module, and it has been decreased of 4.92% in length and 5.11% in volume compared with CCFinder.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 연구의 목표는 제안하는 마이닝 프로세스를 이용하여, 기존 중복코드 검출 기법의 문제들을 극복하여 어스팩트 마이닝에 크로스커팅 개념을 성공적으로 적용하는 것이다. 제안하는 프로세스가 크로스커팅 영역을 효율적으로
어스팩트 마이닝의 목적은 현존하는 시스템에서 크로스커팅 영역을 자동 추출하고, 추출된 크로스커팅 영역을 AOP 방법에 적용함으로서 시스템 구성을 최적화 하는 것이 목적이다. 크로스커팅 영역을 추출하기 위하여 텍스트 정형화 방법을 이용한다면, 동일한 구조이나 식별자가 다른 크로스커팅 영역으로 추출할 수 없다.
제안 방법
후)1」은상위">1」은 상위 엘리먼트가 없기 때문에, 1이상의 Scope에서만 수행하게 된다. Node_Vector[2]이면, Node_Vector[1]을 Start_Node로 저장하고, Node_Vector[2]를 End_Node 로 저장하는 과정을 반복수행하면서, 제어의존관계를 추출하였다.
후)객체 지향">객체지향 리팩토링에 주요한 관심 요소인 메소드 내의 파라미터 사이에 존재하는 중복 코드에 대한 처리는 AspectJ, AspectC 등의 어스팩트 지원 프레임워크에서 직접적인 명세가 불가능하고 어스팩트 지원 프레임워크의 핵심인 크로스커팅 영역에 대한 정의가 모호하여 사용목적에 따라 이를 특정 지을 수 있는 접근 방법이 필요하였다. 리팩토링
구문분석 파싱을 통하여, 추상구문 분석 엘리먼트를 추출한다.
포인트컷으로 설정과 조인포인트에서의 실행으로 어스팩트 마이닝을 적용한다. 메소드 호출 전후에 사용자 지정 행위를 수행하는 어드바이스인 around()를 사용하고, for문 실행 시 파라미터 호출을 우회하여 어드바이스의 정의 내용이 실행되도록 하며 이를 크로스커팅기능 명세([그림 20])로 작성한 후 위빙을 실시한다.
Apriori 알고리즘은 연관 규칙 마이닝의 방법이다. 반복되는 패턴 분석을 위하여 사용되고, 본 논문에서는 에지 인덱스에 대한 발생 빈도를 기반으로 각 에지 사이의 연관관계를 밝히기 위한 방법으로 사용한다.
분리된 에지 NodeA_EL_B (AB2)와 NodeB_EL_A (AB2)를 비교하여 동일하다면, 분리된 EL_C와 NodeA_EL_C (AC2)와 NodeB_EL_B (AC2)를 비교를 수행하고 동일하다면, 연속된 세 에지로 판명되어 NodeA_EL_A, NodeB_EL_A, NodeB_EL_B, NodeB_EL_C (AA2, AB2, AC2)로 출력하는 과정을 반복하면서, 연속 세 개의 에지를 추출한다.
생성된 각 모듈의 구문분석트리를 이용하여, 중복구 문트리를 생성하였다.
생성된 각 모듈의 중복구문 트리 이용하여, 최적화된 크로스커팅 영역을 추출한다. 추출코드를 최적화하기 위하여, 필터링을 이용한다.
분석된 엘리먼트에 인덱스를 부여하고, 인덱스 사이의 구문 관계를 생성한다. 생성된 구문관계의 제어의존 관계를 분석하여 구문분석 트리를 생성한다. 구문분석 트리에 고유한 에지 인덱스를 부여하고, Apriori 알고리즘을 이용하여 빈발
네 번째는 크로스커팅 영역을 추출하는 단계이다. 생성된 중복구문트리를 이용하여, 크로스커팅 영역을 추출한다. 다섯 번째는 어스팩트 마이닝을 수행하는 단계이다.
추출코드를 최적화하기 위하여, 필터링을 이용한다. 연속된 엘리먼트 노드 수 1이하를 제외한 나머지 엘리먼트를 이용하여 크로스커팅 영역을 추출하였다.
후)동일 하나">동일하나 구조가 다를 경우, 크로스커팅 영역으로 추출할 수 없다. 이러한 문제를 해결하기 위하여 추상 구문트리 기반의 어스팩트 마이닝 프로세스를 [그림 2] 와 같이 정의 제안한다.
후)추상구 문트리를">추상구문트리를 생성하는 단계이다. 작성된 명세서를 이용하여 엘리먼트 사이의 제어 의존관계를 분석하고, 추상구문트리를 생성한다. 세 번째는 중복구문 트리를 생성하는 단계이다.
제안하는 논문에서는 객체지향 프로그램의 리팩토링 요소에 대해 어스팩트 적용 과정을 개선하였다.
Apriori는 반복되는 패턴 분석을 위하여 사용되는 알고리즘으로 연관 규칙 마이닝 방법(Association Rule Mining)으로 사용된다. 제안하는 논문에서는 에지 인덱스에 대한 발생 빈도를 기반으로 각 에지 사이의 연관관계를 밝히기 위한 방법으로 사용한다. 각 모듈에서
제안하는 프로세스가 크로스커팅 영역을 효율적으로 수행하는지 정량적인 평가를 위하여, 소프트웨어의 복잡도를 측정, 수치화 하는 Halstead‘s 소프트웨어 복잡도 평가기법을 도입하였다.
후)중복구 문">중복구문 트리의 명확도를 향상하기 위하여, 4개의 구문 엘리먼트의 공통관계(연속 3에지)를 적용하였다. 연속 3에지를 검출하기 위한
후)중복구 문트리를">중복구문트리를 생성하기 위하여, 추상구조트의 에지관계를 분석한다. 자주 반복되는 에지를 추출하게 되면, 반복되는 엘리먼트를 확인할
추상 구문분석 명세에서 엘리먼트 사이의 제어의존 관계를 분석하여, 중복된 엘리먼트를 추출하였다. 추출된 엘리먼트를 이용하여 GDL(Graph Description Language) 명세를 생성하고, 각 모듈별 구
후)구문 분석">구문분석 명세에서 엘리먼트 사이의 제어의존 관계를 분석하여, 중복된 엘리먼트를 추출하였다. 추출된 엘리먼트를 이용하여 GDL(Graph Description Language) 명세를 생성하고, 각 모듈별 구분분석 트리를 생성하였다.
다섯 번째는 어스팩트 마이닝을 수행하는 단계이다. 추출된 크로스커팅 영역을 이용하여 AOP언어에 적용함으로서 시스템 모듈 구성을 최적화한다. 각 단계의 상세한 내용은 다음 장에서 기술하였다.
첫 번째는 현존하는 시스템의 각 모듈을 파싱하여 추상구문분석을 하는 단계이다. 파싱을 통하여 구문분석 엘리먼트를 추출하고 명세서를 작성한다. 두 번째는 각 모듈의
대상 데이터
92%로 향상된 결과를 보였다. 프로그램 부피는 원본모듈에서는 9146, CCFinder에서는 8280, 제안하는 프로세스(ASS)에서는 7857으로 측정되었다. 이 결과는 원본 모듈 대비 9.
이론/모형
후)에 지">에지 사이의 연관관계를 밝히기 위한 방법으로 사용한다. 각 모듈에서 빈발 에지를 추출하기 위하여, Apriori 알고리즘을 적용하여 [그림 14]와 같이 추출하였다.
후)구문 관계의">구문관계의 제어의존 관계를 분석하여 구문분석 트리를 생성한다. 구문분석 트리에 고유한 에지 인덱스를 부여하고, Apriori 알고리즘을 이용하여 빈발 에지 인덱스를 추출하여 중복구문 트리를 생성한다. 생성된 중복구문 트리를 크로스커팅 영역으로 변환하는 기술을 현존하는 시스템에 적용, 어스팩트 마이닝에 적용함으로 시스템 모듈을 최적화할 수 있다.
후)중복구 문">중복구문 트리를 생성하기 위하여, 추출된 빈발 에지 항목([그림 15])을 이용한다.
중복된 빈발 인덱스를 추출하기 위하여, Apriori 알고리즘[9]을 이용한다. Apriori는 반복되는 패턴 분석을 위하여 사용되는 알고리즘으로 연관 규칙 마이닝 방법(Association Rule Mining)으로 사용된다.
중복된 인덱스를 추출하기 위하여, Apriori 알고리즘 적용한다. Apriori 알고리즘은 연관 규칙 마이닝의 방법이다.
후)추상구 문">추상구문 분석을 위하여 파서 생성기 Berkeley Yacc[8]의 시스템 모듈을 사용하였다. 어스팩트 마이닝
크로스커팅 영역의 추출 방법으로 추상구문 분석을 통하여 생성되는 구문분석 엘리먼트를 이용한다. 분석된 엘리먼트에 인덱스를 부여하고, 인덱스 사이의 구문 관계를 생성한다.
토큰 기반 추출방법은 CCFinder[6]에서 사용하는 방법이다. 소스코드에 대한 어휘 분석이 적용되고,
성능/효과
후)추상구문구조">추상 구문구조 분석을 이용한 5단계의 정형화된 프로세스 모델을 제시하였으며, 어스팩트 지원 프레임워크의 종류에 관계없이 일관된 결과를 얻을 수 있다. Berkeley Yacc의 berbose.c 모듈을 제안하는 마이닝 프로세스에 적용해 본 결과, 원본 대비 90.53%의 길이와 부피의 감소하였고, CCFinder 대비 95.08%의 길이 감소, 94.89%의 부피 감소효과를 확인하였다.
후)사용 목적에">사용목적에 따라 이를 특정 지을 수 있는 접근 방법이 필요하였다. 리팩토링 시 크로스커팅 영역의 모호성을 구체화할 수 있는 방안으로 추상 구문구조 분석을 이용한 5단계의 정형화된 프로세스 모델을 제시하였으며, 어스팩트 지원 프레임워크의 종류에 관계없이 일관된 결과를 얻을 수 있다. Berkeley Yacc의 berbose.
본 논문에서 제안하는 마이닝 프로세스를 어스팩트 개념으로 리팩토링에 접근하여 캡슐화 된 객체의 재조합 문제를 해결할 수 있었으며, 크로스커팅 리팩토링의 난제인 크로스커팅 영역 추출 또한 추상구문트리를 이용하여 최적화된 시스템을 구성할 수 있게 되었다.
후)모듈 [6]에서는">모듈[6]에서는 1336, CCFinder에서는 1241, 제안하는 프로세스(ASS)에서는 1180으로 측정되었다. 이 결과는 원본 모듈 대비 9.47%, CCFinder 대비 4.92%로 향상된 결과를 보였다. 프로그램 부피는
후)원본 모듈에서는">원본모듈에서는 9146, CCFinder에서는 8280, 제안하는 프로세스(ASS)에서는 7857으로 측정되었다. 이 결과는 원본 모듈 대비 9.47%, CCFinder 대비 5.11%로 향상된 결과를 확인하였다.
질의응답
핵심어
질문
논문에서 추출한 답변
어스팩트 마이닝의 목적은 무엇인가?
어스팩트 마이닝의 목적은 현존하는 시스템에서 크로스커팅 영역을 자동 추출하고, 추출된 크로스커팅 영역을 AOP 방법에 적용함으로서 시스템 구성을 최적화 하는 것이 목적이다. 크로스커팅 영역을 추출하기 위하여 텍스트 정형화 방법을 이용한다면, 동일한 구조이나 식별자가 다른 크로스커팅 영역으로 추출할 수 없다.
중복구문트리를 생성하기 위해 추상구조트리의 에지관계를 분석하는 이유는 무엇인가?
중복구문트리를 생성하기 위하여, 추상구조트의 에지관계를 분석한다. 자주 반복되는 에지를 추출하게 되면, 반복되는 엘리먼트를 확인할 수있기 때문이다.
어스팩트 마이닝에서 필수적인 기술은 무엇인가?
현존하는 어스팩트 개발 방법은 크로스커팅 대상 영역을 추출에 어려움이 있기 때문에, 어스팩트 마이닝을 적용하기가 쉽지 않다. 어스팩트 마이닝에서는 기존 프로그램의 리팩토링 요소를 크로스커팅 영역으로 변환하는 기술이 필수적이다. 본 논문에서는 리팩토링에 적합한 크로스커팅 영역 자동 추출을 위한 시스템에서 크로스커팅 개념을 추출하기 위한 어스팩트 마이닝 방법을 제안한다.
참고문헌 (9)
D. P. Mohapatra and M. Sahu, "Dynamic Slicing of Aspect-Oriented Programs," in Proc. of Informatica, 2008.
S. Apel, C. Kastner, and D. Batory., "Program refactoring using functional aspects," In Proceedings of the 7th International Conference on Generative Programming and Component Engineering. ACM Press, pp.161-170, 2008.
M. P. Monteiro, "Object-to-aspect refracturing for feature extraction," in Proc. of AOSD, 2004.
S. Hanenberg, C. Oberschulte, and R. Unland., "Refactoring of Aspect-Oriented Software," In Proceedings of the 4th International Conference on Object-Oriented and Internet-based Technologies, Concepts, and Applications for a Networked World, pp.9-35, 2003.
M. Rieger and S. Demeyer, "A Language Independent Approach for Detecting Duplicated Code," in Proc. of ICSM, 1999.
Toshihiro Kamiya, Shinji Kusumoto, Katsuro Inoue, "CCFinder: A Multilinguistic Token Based Code Clone Detection System for Large Scale Source Code," IEEE transactions on software engineering, Vol.29, No.7, 2002(7).
B. S. Baker, "A Program for Identifying Duplicated Code," in Proc. of WCRE, 1999.
http://invisible-island.net/byacc/byacc.html
M. Hahsler, B. Grun, K. Hornik, and C. Buchta, "Introduction to arules - A computational environment for mining association rules and frequent item sets," The Comprehensive R Archive Network, 2010(3).
※ AI-Helper는 부적절한 답변을 할 수 있습니다.