• 제목/요약/키워드: 코드클론

검색결과 14건 처리시간 0.022초

코드클론 표본 집합체 자동 생성기 (Automatic Generation of Code-clone Reference Corpus)

  • 이효섭;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제7권1호
    • /
    • pp.29-39
    • /
    • 2011
  • 프로그램 내의 코드클론을 찾아주는 도구나 기술들을 평가하기 위해서는 해당 도구가 탐지하는 못하는 클론이 있는지 확인해야 한다. 이를 위해서 샘플 소스코드에 대해서 코드클론을 모두 모아놓은 표준 표본 집합체가 필요하다. 그런데 기존의 코드클론 표본 집합체는 여러 클론탐지 도구의 결과들을 참조해 수작업으로 구축하지만 평가 기준으로 사용하기에는 빠져있는 표본이 많다. 본 연구에서는 자동으로 코드클론 표본 집합체를 생성하는 방법을 제안하고 도구를 구현하였다. 이 도구는 프로그램 소스를 핵심구문트리로 변환한 뒤, 트리를 샅샅이 비교하여 클론 패턴을 찾아낸다. 본 도구는 오탐이 없으며, 특정한 패턴을 제외하고 미탐도 없어서 코드클론 표본 집합체를 자동으로 생성하기 적합하다. 실험결과 상용도구인 CloneDR에서 찾아낸 클론을 모두 포함하면서 2-3배 더 많은 클론들을 찾아내었고, Bellon의 기존 표본 집합체의 클론들을 거의 대부분 포함(93-100%)하면서 자동 구축한 표본 집합체의 크기가 훨씬 크다.

CCR : 트리패턴 기반의 코드클론 탐지기 (CCR : Tree-pattern based Code-clone Detector)

  • 이효섭;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제8권2호
    • /
    • pp.13-27
    • /
    • 2012
  • 본 연구에서는 트리패턴 기반으로 코드클론을 탐지하는 도구인 CCR(Code Clone Ransacker)를 제안하고 구현하였다. CCR은 프로그램 트리의 모든 하위트리 쌍을 비교하여 중복된 부분인 트리패턴을 찾고 동일한 모양의 패턴들을 하나로 묶어 프로그램에 존재하는 클론들을 샅샅이 탐지한다. 이때 이미 찾은 패턴 내부의 클론 패턴을 비교대상에서 제외하여 중복계산을 하지 않아 불필요한 예산을 최대한 줄인다. 실험으로 CCR의 성능을 평가한 결과, CCR의 정확성과 탐지성은 높다. 프로그램의 구조를 비교하는 기존의 트리패턴 기반의 코드클론 탐지 도구들의 정확성과 탐지성은 이미 좋은 것으로 알려져 있지만, CCR은 높은 정확성을 유지하면서 탐지성은 기존의 Asta보다는 최대 5배, CloneDigger보다는 약 1.9배 높다. 그리고 CCR이 찾은 코드클론은 기존의 코드클론 표본 집합체의 클론을 대부분 포함한다.

공통 토큰에 기반한 서로 다른 언어의 유사성 검사 (Cross-Language Clone Detection based on Common Token)

  • 홍성문;김현하;이제형;박성우;모지환;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제14권2호
    • /
    • pp.35-44
    • /
    • 2018
  • 서로 다른 언어로 작성된 소스코드의 유사성 검사는 주로 요약구문트리를 기반으로 비교를 수행한다. 하지만 대규모의 소스코드를 실용적인 수준으로 비교하려면 토큰수준 기반에서 작동하는 유사성 검사 기술이 필요하다. 본 연구에서는 서로 다른 언어에서 생성되었지만 같은 의미를 지닌 토큰을 표현할 수 있는 공통 토큰을 정의하고, 소스코드에서 언어별 처리 과정을 거쳐 생성한 공통 토큰의 나열을 입력으로 소스코드의 유사성 검사를 수행하는 방법을 제안한다. 한국저작권위원회의 표절검사 도구 exEyes를 사용해서 서로 다른 언어로 작성된 동일한 코드를 대상으로 실험한 결과, 제안한 방법을 사용했을 때, 유사성 평가 성능이 향상됨을 보였다.

이동에이전트의 클론 실행 방지하는 프로토콜 설계 (Design of a protocol for preventing mobile agent clone from execution)

  • 백주성;이동익
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 1998년도 가을 학술발표논문집 Vol.25 No.2 (3)
    • /
    • pp.311-313
    • /
    • 1998
  • 이동에이전트는 독립된 객체로서 자율성을 가지고 컴퓨터를 이동하며 부연된 임무를 수행하는 프로그램이다. 이동에이전트는 코드와 데이터로 구성된 프로그램이므로 쉽게 복제될 수 있다. 이렇게 복제된 이동에이전트를 이동에이전트 클론이라 한다. 복제된 클론은 원본과 구별이 불가능하다. 이것은 에이전트의 인증을 불가능하게 만들고 예상되지 않은 에이전트의 중복 수행을 야기하며 에이전트의 내부정보 유출 공격을 위한 수단으로 사용된다. 본 논문에서는 이동에이전트 클론에 의한 이러한 문제점을 고찰하고 온라인 상에서 클론의 존재를 탐지하고 실행을 방지하며 클론을 생성한 서버를 확인하는 프로토콜을 설계한다.

  • PDF

트리 기반 컨볼루션 신경망을 이용한 BigCloneBench 개선 (Improvement of BigCloneBench Using Tree-Based Convolutional Neural Network)

  • 박건우;홍성문;김현하;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제15권1호
    • /
    • pp.43-53
    • /
    • 2019
  • 기계 학습을 이용하여 의미가 유사한 코드 클론을 탐지하는 도구의 성능 평가에 빅클론벤치를 많이 활용한다. 하지만 빅클론벤치는 기계 학습에 최적화된 벤치마크가 아니기 때문에 그대로 기계 학습에 사용하면 잘못된 학습 데이터가 만들어질 수 있다. 본 연구에서는 빅클론벤치에서 제공하고 있는 코드 클론 데이터에서 누락된 타입-4 클론을 기계 학습을 이용하여 추가로 찾아 보완함으로써 빅클론벤치를 개선할 수 있음을 실험적으로 밝힌다. 트리 기반 컨볼루션 신경망을 이용한 기계 학습 모델을 사용해서 개선된 데이터를 학습했을 때, 기존의 데이터를 학습했을 때에 비해 기계 학습의 정확도 및 성능이 향상되었음을 확인하였다.

제품군의 재사용 가능한 클론 코드의 메소드 경로 통일을 위한 코드 클러스터링 방법 (A Code Clustering Technique for Unifying Method Full Path of Reusable Cloned Code Sets of a Product Family)

  • 김태영;이지현;김은미
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제12권1호
    • /
    • pp.1-18
    • /
    • 2023
  • 유사한 소프트웨어는 기존 산출물을 복제하고 수정하는 클론-앤-오운(clone-and-own, CAO) 방법으로 개발되곤 한다. 그러나 클론-앤-오운 방법은 복제된 제품의 수가 늘면서 유지보수를 어렵게 만들기 때문에 나쁜 프랙티스로 간주된다. 소프트웨어 제품라인 공학은 체계적인 재사용을 통해 소프트웨어 제품군을 개발하는 방법으로 클론-앤-오운 방법의 문제를 해결할 수 있다. CAO 방식으로 개발되어 온 제품패밀리를 제품라인 공학으로 마이그레이션하는 작업은 여러 소프트웨어 제품에서 클로닝된 부분들을 찾아 통합하고 재사용 가능한 자산으로 구축하는 것으로부터 시작된다. 그러나 클로닝이 디렉토리부터 코드 라인까지 다양한 수준에서 발생하고 그 과정에서 이들의 구조에 변경이 일어날 수 있어 단순하게 클로닝을 찾아내는 것만으로는 고품질의 제품라인 코드베이스를 구축하기 어렵다. 성공적인 마이그레이션을 위해서는 소스 코드들 사이의 클로닝 관계를 찾는 것 이외에도 소스 코드들의 파일 경로와 클래스 이름, 메소드 시그니처 등의 동일성을 확보는 작업이 선행되어야 한다. 이에 본 연구는 CAO 기반으로 개발된 제품들로부터 마이그레이션 대상 제품들을 선정한 후 제품들에 흩어져 있는 유사 코드 집합을 검출하여 메소드 경로의 통일이 필요한 대상을 식별하는 클러스터링 방법을 제안한다. 제안 방법의 효과를 보이기 위해 CAO 방식으로 진화해온 ApoGames 제품군에 제안 방법을 적용하여 실험을 진행하였다. 그 결과, 전처리 없이 수행된 파일의 상대 경로 기반 클러스터링 방법의 평균 정밀도는 0.91이며 식별된 공통 클러스터의 개수는 0개인 반면에 이 논문에서 제안하는 전처리와 함께 수행된 메소드 시그니처 기반 클러스터링 방법의 평균 정밀도는 0.98로 개선되었으며 식별된 공통 클러스터는 최대 15개까지 증가하였다.

code2vec을 이용한 유사도 감정 도구의 성능 개선 (Enhancing the performance of code-clone detection tools using code2vec)

  • 엄태호;홍성문;양준혁;장효석;도경구
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제17권1호
    • /
    • pp.31-40
    • /
    • 2021
  • 소스코드 표절은 원본 자료의 출처를 분명히 밝히지 않고 자신의 것처럼 사용하는 행위를 말한다. 소스코드 표절로 인한 문제는 법적인 분쟁을 다투는 경우까지 다양한 문제를 일으킨다. 소스코드의 표절 여부는 일반적으로 비교 대상 소프트웨어 프로젝트 내의 각 소스코드를 전수 비교하여 유사도를 측정하여 결정한다. 전수 비교는 표절 가능성이 전혀 없는 코드도 비교 대상에 포함하기 때문에 그만큼의 시간을 헛되이 소모한다. 소스코드 표절로 의심되는 비교 쌍만 선별하여 비교할 수 있으면 그만큼 비교 횟수는 줄어들게 되어 탐지 도구의 실행 속도를 향상시킬 수 있을 뿐만 아니라, 표절 가능성이 높은 부분만을 대상으로 탐지의 정확도를 높이는데 집중할 수도 있다. 본 논문에서는 code2vec 이라는 기계학습 모델을 활용하여 코드 클론으로 의심되는 소스코드들을 미리 분류하여 비교 횟수를 줄임으로써 소스코드 표절 탐지의 성능을 개선할 수 있음을 보인다.

하이드로사이클론 내의 난류유동해석 (Numerical Study of Turbulent Flow in a Hydrocyclone)

  • 주종일;최영석;이용갑;김탁현;김상용
    • 한국유체기계학회 논문집
    • /
    • 제6권2호
    • /
    • pp.34-40
    • /
    • 2003
  • Numerical studies have been conducted to predict the solid-liquid separation efficiency of turbulent flow in a hydrocyclone using a commercial CFD code. To validate the CFD code, several preliminary numerical calculations are carried out to determine the influence of parameters such as grid systems, numerical schemes, and turbulence models. The numerical studies have been performed on the hydrocyclones with the different vortex finder geometries by changing the mass flow rate, and the results were compared with the experimental data. The results show that the CFD code can be used as a design tool to improve the performance of hydrocyclones.

오픈소스 기반의 실습용 SIC/XE 컴퓨터 시뮬레이터의 구현 (Implementation of Open Source-based SIC/XE Computer Simulator for Educational Laboratory)

  • 김주현;김현아;문봉교
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 추계학술발표대회
    • /
    • pp.2-5
    • /
    • 2017
  • 기존의 어셈블러는 시각적으로 불편하고 사용자 편의를 위한 기능을 제공하지 않으며 최신의 컴퓨터와의 호환성 문제가 있었다. 이러한 문제점들의 해결책으로 나온 SIC/XE 어셈블러 시뮬레이터 오픈 소스를 GitHub에서 클론하여 분석하고 테스트하였다. 본 논문에서는 오픈 소스 SIC/XE 어셈블러 시뮬레이터의 다양한 오류를 분석하고 이를 수정하였다. 또한 리터럴 테이블, 심볼 테이블, 목적코드 및 오류 메시지의 시각화를 통해 기존의 SIC/XE 어셈블러 시뮬레이터를 개선시켜 사용자 편의를 높인 학습용 SIC/XE 어셈블러 시뮬레이터를 구현하였다.

Bacillus licheniformis WL-12의 cellulase 유전자 클로닝과 발현 (Cloning and Expression of A Bacillus licheniformis Cellulase Gene)

  • 윤기홍
    • 미생물학회지
    • /
    • 제42권4호
    • /
    • pp.313-318
    • /
    • 2006
  • 가정에서 제조된 된장으로부터 cellulase 생산균으로 분리된 고온성 WL-12는 형태적 특성, 생화학적 성질 및 16S rRNA의 염기서열에 근거하여 Bacillus licheniformis로 동정되었다. B. licheniformis WL-12의 cellulase 유전자를 클로닝하여 그 염기서열을 결정한 결과 cellulase 유전자(celA)는 517 아미노산으로 구성된 단백질을 코드하며 1,551 뉴클레오티드로 이루어졌다. 아미노산 잔기배열을 분석한 결과 WL-12의 cellulase는 활성영역과 cellulose 결합영역으로 구성되어 있었으며, glycosyl hydrolase (GH) family 5에 속하는 B. licheniformis, B. subtilis와 B. amyloliquefaciens의 cellulase와 높은 상동성을 보였다. 클론된 celA를 발현용 vector에 도입하여 B. subtilis에서 발현시켜 cellulase 최대생산성이 7.0 units/ml에 이르렀다.