• 제목/요약/키워드: 소스코드 분석

검색결과 341건 처리시간 0.033초

회귀 분석을 사용한 소스 코드 가독성 메트릭 분석 (Metric Analysis of Source Code Readability using Regression Analysis)

  • 최상철;김순태;이정휴;유희경
    • 한국인터넷방송통신학회논문지
    • /
    • 제17권6호
    • /
    • pp.145-150
    • /
    • 2017
  • 소프트웨어 유지보수는 소프트웨어 생명주기에서 전체 비용의 많은 부분을 차지하고 있다. 소프트웨어를 유지보수하기 위해서는 코드를 읽는 것이 필수적이고, 이는 유지보수 활동에서 가장 많은 시간이 소요되는 활동이다. 코드의 가독성은 사람이 소스코드를 이해하는데 드는 어려움의 정도를 측정하는 메트릭이다. 코드의 가독성이 좋을수록 사람이 소스코드를 이해하기 쉬워진다. 본 논문에서는 소스코드의 가독성을 이분법적으로 판단하는 기존의 연구보다 향상된 기법을 사용하여, 개발 중인 소스코드의 가독성 정도를 정량적으로 측정할 수 있는 새로운 소스코드 가독성 메트릭을 제안한다. 이를 평가하기 위해, 우리는 설문조사를 수행하고 가독성을 가장 잘 설명하는 척도를 찾을 수 있도록 회귀 분석 기법을 사용해 그 결과를 분석할 것이다.

실행코드 비교 감정에서 주변장치 분석의 유효성 (Study on the comparison result of Machine code Program)

  • 김도현;이규대
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제16권1호
    • /
    • pp.37-44
    • /
    • 2020
  • 소프트웨어의 유사성 비교는 소스코드를 대상으로 한다. 소스코드는 프로그램 언어로 표현된 개발자의 지적 저작권으로 보호된다. 문서형식으로 작성된 프로그램 소스코드는 개발자의 전문지식과 아이디어가 포함된 내용을 포함하고 있다. 소프트웨어 저작권의 불법도용을 판단하기 위한 감정 작업은 원본과 비교본의 소스 코드를 대상으로 파일의 구성과 내용을 검증하는 방법으로 수행된다. 그러나 실제적으로 피고소인 측의 불성실한 목적물 제공으로 소스코드의 일대일 비교감정이 어려운 상황이 증가하고 있다. 이 경우 실행코드에 대한 비교감정이 수행되어야 하며, 역어셈블 방법, 역공학기법, 기능실행의 시퀀스 분석 등의 간접적인 방법이 적용된다. 본 논문에서는 소스코드제공이 어려운 상황에서 시스템과 실행코드 파일을 대상하는 하는 감정 사례를 통해 간접적인 비교결과의 유효성에 대해 분석하고, 감정결과에 활용하는 방안을 제시한다.

소스 코드 분석을 통한 코딩 패턴의 특성 평가에 관한 연구 (A Study on the Evaluation of Coding Pattern Quality Using Source Code Analysis)

  • 김영태;임재현;공헌택;김치수
    • 한국산학기술학회:학술대회논문집
    • /
    • 한국산학기술학회 2010년도 추계학술발표논문집 1부
    • /
    • pp.402-405
    • /
    • 2010
  • 본 논문에서는 소스 코드에 자주 나타나는 코딩 패턴을 자동으로 추출하기 위하여 소스 코드를 분석하고 특성을 평가한다. 기존에 소스 코드에 대한 패턴 마이닝을 이용한 코딩 패턴 감지 방법이 제안되었지만, 수동으로 조사 가능한 코딩 패턴의 수는 한정되어 있기 때문에 대규모 소프트웨어 등에 대한 충분한 분석은 할 수 없었다. 따라서 본 논문에서는 개발자가 분석하고자 하는 코딩 패턴에 대한 자동 추출을 목표로 코딩 패턴의 특성 평가 지표를 선정하여 소스 코드에 대한 분석을 수행한다.

  • PDF

SW 개발 R&D 프로젝트에서 소스 코드 품질을 위한 정적분석 (Static Analysis for Code Quality on R&D Projects of SW Development)

  • 박정현;박영식;정효택
    • 전자통신동향분석
    • /
    • 제32권1호
    • /
    • pp.102-115
    • /
    • 2017
  • 본고에서는 SW 개발 R&D 프로젝트에 개발 소스 품질 검증을 위한 정적분석 실행방안을 기술한다. 정적분석 실행 방안으로 소스 코드 품질 검증 대상 SW 개발 R&D 프로젝트 범위와 정적분석 검증 기준을 기술하고, 정적분석 검증을 위한 구체적 실행 방안과 검증 프로세스 그리고 정적분석 검증을 지원 환경 체계를 제시했다. 또 제시된 정적분석 검증 실행 방안에 근간하여 수행 중인 프로젝트에서 개발한 소스 코드에 대해 시범적으로 정적분석 검증을 수행하고 이를 바탕으로 정적분석 검증 실행의 안정적인 도입 및 운영 방향을 시사점으로 기술하였다. 제시된 정적분석 검증 실행 방안은 SW 개발 R&D 프로젝트에서 개발 소스 코드 품질 관리 및 유지를 위한 방안으로 고려해 볼 수 있을 것으로 기대한다.

  • PDF

정형명세 보안기능의 코드생성 도구 비교 (Comparison of Code Generation Tools from Formal Specification of Security Function)

  • 유희준;김일곤;최진영;김상호;노병규
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2002년도 봄 학술발표논문집 Vol.29 No.1 (A)
    • /
    • pp.829-831
    • /
    • 2002
  • 최근 들어 보안에 대한 관심이 높아지고 있으며, 많은 보안 관련 프로그램이 사용되고 있는 상황이다. 하지만 안전성을 예측하기 어려운 보안 기능을 완벽하게 구현하기 위해서 현재의 테스팅 방법론만으로는 완전성을 보장할 수 없으므로 보다 안전한 보안 기능을 구현하기 위해서 정형명세 방법은 반드시 필요하다. 또한 실제로 시스템들이 개발되는 과정에 있어서 설계될 당시와는 달리 결함을 가질 수 있다. 시스템에 대한 명세가 정확하다 하더라도 개발자인 사람의 개입으로 인해서 개발하는 도중에 명세와 다른 결과를 초래하여 결함이 발생할 수 있다. 이러한 결함은 개발자나 사용자에 의해 쉽게 발견되기 어렵다. 만일 보안 시스템이 알져지지 않은 결함이 있다면 비밀 정보가 쉽게 누설될 수 있다는 큰 문제가 발생할 수 있다. 통신망을 사용하는 인구의 확대와 더불어 다양한 형태의 통신 서비스가 제공됨에 따라 시스템의 특성이 복잡해지고 불법적인 자료 접근의 위험도 많이 노출되고 있다. 따라서 명확한 정형명세 보안기능으로부터 자동 코드 생성은 반드시 필요하다. 본 논문에서는 여러 정형 도구를 사용해서 보안기능에 대한 정형명세를 작성한 후에 소스코드 생성한 후, 정형명세를 이용하여 설계 및 구현한 프로그램에 대한 명세와 소스코드간 일치성 검토 방법을 개발하여, 정형명세를 통해 생성된 보안기능 소스코드의 보안성 측면과 성능적 측면의 Teade-Off 분석하는 것이다. 논문에서는 인증 관련 보안 기능인 S/KRY에 대해서 4개(STATEMATE MAGMUM, Rational Rose 98, SPEAR, VDM-SL)의 정형도구를 사용하여 명세 후, 소스 코드를 생성하여 생성된 각 코드에 대하여 비교하였으며, 현재 상용화 되어있는 Bellcore 의 S/KEY 시스템과의 비교를 수행하였다. 분석에서는 제품의 효율성뿐만 아니라 보안성을 중요하게 생각하였으며, 앞으로 보안 관련 소프트웨어 개발에 사용될 수 있는 도구들이 가이드 라인에 대한 정보를 제공한다.

  • PDF

바이너리 파일에서 Word2Vec 딥러닝 기법을 이용한 복합 자료형 추론 연구 (A Study on Composite Data Type Inference using Word2vec Deep Learning Scheme on Binary File)

  • 민예슬;정현오;이혜린;이승연;우드아커벙 오퐁;정준호;손윤식
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 추계학술발표대회
    • /
    • pp.306-309
    • /
    • 2017
  • 소프트웨어의 보안에 대한 중요성이 점차 높아짐에 따라, 소스코드 기반의 소프트웨어의 보안약점 분석 기법에서 더 나아가 소스 코드가 존재하지 않는 바이너리 파일을 대상으로 분석을 수행하는 연구가 진행되고 있다. 왜냐하면 소프트웨어 개발의 복잡성 증가에 따른 서드파티 라이브러리 활용과 레거시 코드의 관리 부재, 임베디드 소프트웨어의 특성 등으로 인해 소스 코드가 존재하지 않는 바이너리 코드의 사용이 늘어나고 있기 때문이다. 따라서 최근 바이너리 코드에 내제된 보안약점을 분석하기 위해서 중간코드를 이용하여 정적분석을 수행하는 다양한 연구가 진행되고 있다. 중간언어를 사용함으로 실행환경에 따라 달라지는 바이너리 코드가 중간언어로만 변환이 된다면 동일한 형태의 보안약점 분석기술을 통해 효과적인 수행이 가능하다. 본 논문에서는 이러한 바이너리 코드로부터 중간언어로 변환시 컴파일 과정에서 상실된 복합 자료형을 재구성하기 위해 Word2vec 딥러닝 기법을 이용한 추론기법을 제안한다.

소프트웨어 품질향상을 위한 소스코드 기반의 테스트 케이스 자동 생성에 관한 연구 (A Study on the Automatic Generation of Test Case Based on Source Code for Quality Improvement)

  • 손웅진;이승호
    • 전기전자학회논문지
    • /
    • 제19권2호
    • /
    • pp.186-192
    • /
    • 2015
  • 본 논문에서는 소프트웨어 개발 과정에서 소프트웨어의 품질향상에 필요한 소스코드의 API를 기반으로 테스트 케이스를 자동으로 생성할 수 있는 기법을 제안한다. 제안된 기법은 Doxygen 오픈소스 툴을 이용한 소스코드 분석 과정, 분석된 결과를 이용한 API 사양 정의 과정, 테스트 디자인 생성 과정, Pairwise Test 기법을 적용한 테스트 케이스 생성 과정 등의 4가지 과정으로 구성된다. Doxygen 오픈소스 툴을 이용한 소스코드 분석 과정은 소스코드의 API 정보인 API 명, 입력 파라미터, 리턴 파라미터 정보 등을 추출하는 단계이다. 분석된 결과를 이용한 API 사양 정의 과정은 추출한 API 정보를 바탕으로 SQLite 데이터베이스를 이용하여 테스트 케이스 생성에 필요한 API 정보들을 데이터베이스화하여 정의하는 단계이다. 테스트 디자인 생성 과정은 정의된 API를 기반으로 입력 파라미터, 리턴 파라미터의 임계치 설정, 제약사항 설정 등을 통해 시나리오를 디자인하여 데이터베이스로 구성하는 단계이다. Pairwise Test 기법을 적용한 테스트 케이스 생성 과정은 테스트 디자인 정보를 바탕으로 Pairwise 조합 기법을 적용하여 실제 테스트 케이스를 생성하여 데이터베이스로 구성하는 단계이다. 제안된 기법의 효율성을 평가하기 위하여 기존의 명세서 기반의 테스트 케이스 생성 방법과 비교한 결과 비슷한 시간 내에 훨씬 더 많은 테스트 케이스가 생성되며, 명세 기반 기법으로는 불가능한 소스코드에 대한 기능 검증도 가능하여 소스코드내 결함 위치도 확인할 수 있다. 따라서 사람의 인력을 통한 수작업에 의존적으로 진행하였던 소프트웨어 개발 품질 향상 과정을 소스코드의 API를 기반으로 자동으로 테스트 케이스를 생성함으로써, 노동력 절감 및 제품 개발 시간 등을 단축 할 수 있으리라 기대된다.

임베디드 시스템의 보안성 향상을 위한 LLVM 기반의 소스코드 난독화 도구 설계 (Design of Source Code Obfuscation Tool based LLVM to improve security in Embedded System)

  • 하재현;곽동규
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2022년도 추계학술발표대회
    • /
    • pp.201-203
    • /
    • 2022
  • 임베디드 시스템이 일상생활 및 각종 산업에 밀접하게 연관되어 개인 정보 및 국가 기술 등 지적 자산에 대한 보안의 필요성이 나타나고 있다. 이러한 문제점은 임베디드 시스템에 들어가는 소프트웨어의 역공학으로부터 초래된다. 따라서 본 논문은 소스 코드에 대해 제어 흐름 평탄화라는 난독화 알고리즘을 설계하는 방법을 제안한다. 이는 독자적으로 작성된 난독화 알고리즘이기 때문에 오픈 소스로 공개되어져 있는 다른 난독화 도구들에 비해 안전한 특징을 가진다. 제어 흐름 평탄화는 프로그램의 기능을 유지하면서 소스 코드의 정적 분석을 어렵게 하는 기법으로, 데이터를 탈취하려는 악의적인 행위를 사전에 예방할 수 있다. 본 논문에서 제안하는 제어 흐름 평탄화 알고리즘은 하나의 기본 블록으로 이루어진 단순한 소스 코드를 여러 개의 기본 블록으로 분할하고, 조건문을 통해 연결하는 방법을 사용하여 알고리즘의 복잡도를 높였다. 이처럼 새롭게 작성된 Pass를 통해 소스코드 난독화를 적용시켜 임베디드 시스템의 보안성을 향상시킬 수 있다.

소스코드와 실행코드의 상관관계 분석을 통한 최악실행시간 측정 방법 (Measuring Method of Worst-case Execution Time by Analyzing Relation between Source Code and Executable Code)

  • 서용진;김현수
    • 인터넷정보학회논문지
    • /
    • 제17권4호
    • /
    • pp.51-60
    • /
    • 2016
  • 내장 소프트웨어는 실시간성 및 실행 환경으로부터의 독립성을 요구사항으로 갖는다. 실시간성 요구사항은 탑재된 태스크의 최악 실행 시간으로부터 영향을 받는다. 따라서 실시간성을 보장하기 위해서는 정적 분석 기반의 최악 실행 시간 분석 방법을 사용하여 프로그램의 최악 실행 시간을 파악하여야 한다. 그러나 기존의 최악 실행 시간 분석은 실행 환경으로부터 독립성을 고려하지 않는다. 이에 우리는 실행 환경으로부터 독립성을 제공하기 위해 소스코드로부터 실행 시간을 측정하는 방법을 제시한다. 이를 위해 실행 코드가 아닌 소스코드로부터 생성된 제어 흐름 그래프를 통해 실행 시간을 측정한다. 또한 소스코드로부터 생성된 제어 흐름 그래프에는 실행 시간 정보가 존재하지 않기 때문에, 이를 제공하기 위해 소스코드의 문장과 실행코드의 명령어와의 관계를 분석한다. 결과적으로 실행 시간 측정이 가능한 제어 흐름 그래프를 생성할 수 있다. 이를 통해 프로세서로부터 종속적인 부분을 매개변수화할 수 있기 때문에, 최악 실행 시간 분석 도구의 유연성을 향상시킬 수 있다.

Aspect-Oriented Programming을 이용한 Source Code 분석 시스템 설계 (A Design of Source Code Analysis System Using Aspect Oriented Programming)

  • 최민용;양해술
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2002년도 추계학술발표논문집 (하)
    • /
    • pp.2107-2110
    • /
    • 2002
  • 소프트웨어를 설계, 구현하는데 있어서의 어려움이란 주변 환경이나 제반 기술 등과 같은 어려움도 있겠지만 실제 프로그래머가 작성하는 소스코드의 복잡성도 그 원인중의 하나라 할 수 있다. 이와 같은 문제의 해결을 위해서는 소스코드의 접근이나 이의 테스트를 위한 결합 등의 유연성이 높은 소프트웨어 기술이 필요한 실정이다. 이에 따라 AOP(Aspect-Oriented Programming) 기술을 이용하여 소스코드 자체의 접근 및 그의 처리를 용이하게 하여 복잡한 시스템의 개발이나 기존 시스템의 관리에 있어 효율을 높이고자 한다.

  • PDF