• 제목/요약/키워드: 심볼릭 실행

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

Deterministic Parallelism for Symbolic Execution Programs based on a Name-Freshness Monad Library

  • Ahn, Ki Yung
    • 한국컴퓨터정보학회논문지
    • /
    • 제26권2호
    • /
    • pp.1-9
    • /
    • 2021
  • 본문에서는 순수 함수형 언어인 하스켈로 작성된 심볼릭 실행의 병렬화를 위한 상태 모나드 기반의 라이브러리에 결정적 병렬화를 적용하기 편리한 API를 설계/구현하고 멀티코어 컴퓨터에서 벤치마크를 통해 실제 성능을 향상을 확인해 본다. 일반적으로 순수 함수형 프로그램은 병렬화가 쉽다고 알려져 있으나 실제 구현에서 핵심 알고리듬 외적인 부분에서 의도치 않은 순차적 데이터 의존성의 발생으로 병렬화가 어려워질 수 있다. 심볼릭 실행 구현에서는 지금껏 사용했던 변수와 겹치지 않는 새 이름을 생성함으로써 서로 다른 범위의 이름이 같은 변수끼리 혼동하는 착오를 피하는 방식을 종종 활용한다. 그런데 이를 순차적 상태 관리로 구현한 경우가 많아 병렬화에 걸림돌이 된다. 이 논문에서는 하스켈의 범용적 이름 관리 라이브러리인 unbound-generics의 새 이름 생성 기능에 순차적 의존성을 회피할 수 있는 확장 기능을 제공함으로써 병렬적 심볼릭 실행 구현을 간소화하는 데 기여하였다. 우리가 구현한 병렬화 확장의 특징은 기존 unbound-generics 라이브러리의 내부 구현을 그대로 유지한 상태의 확장이라는 점으로, 기존에 unbound-generics로 작성된 순차적 심볼릭 실행기의 성능 저하 우려가 전혀 없다는 점이다. 따라서 병렬화가 필요한 부분에만 확장 기능을 적용하는 방식으로 활용하여 성능을 개선할 수 있다.

자바를 활용한 수치계산에서의 심볼릭 연산 알고리즘

  • 김철수;김익찬;양준영
    • 한국수학교육학회지시리즈E:수학교육논문집
    • /
    • 제13권2호
    • /
    • pp.535-547
    • /
    • 2002
  • 본 논문은 교육현장에서 자바(Java)를 이용한 수치계산 애플릿(Applet)을 개발할 경우 수식을 인식하여 그 결과를 실행하고 보여주는 심볼릭 연산을 구현하기 위한 알고리즘 개발과 다양한 입력식을 처리하기 위한 효율적인 자료구조를 제안한다. 구현된 패키지내의 클래스는 변수와 상수, 다양한 연산자를 처리하기에 적합하며 분석된 정보를 통해 사칙연산의 처리, 연산자 우선순위의 처리, 심볼릭 연산, 다항식, 방정식, 함수의 그래프 작성, 간단한 미적분 처리를 하는 알고리즘을 제안한다.

  • PDF

분기 커버리지를 위한 동적 테스트 데이터 생성 (Dynamic Test Data Generation for Branch Coverage)

  • 정인상;성영락
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(B)
    • /
    • pp.150-152
    • /
    • 2012
  • 일반적으로 테스트 데이터 자동 생성을 지원하기 위해 심볼릭 실행기나 제약 해결기와 같은 도구를 요구한다. 그러나 이와 같은 도구들을 개발하는 것은 상당한 노력이 요구되는 것도 사실이다. 이 논문에서는 이러한 도구들의 지원 없이 분기 커버리지를 효과적으로 달성할 수 있는 테스트 데이터 생성 방법을 제안한다. 이를 위해 경로 지향 테스트 데이터 생성을 위해 개발된 Korel의 방법을 확장하여 프로그램의 분기들을 가능한 많이 실행할 수 있는 테스트 데이터를 효과적으로 생성하는 방법을 제안한다.

MC/DC 커버리지를 만족하는 콘콜릭 테스팅 연구 (Concolic testing research to satisfy the MC/DC coverage)

  • 최석원;구근회;최진영
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2016년도 추계학술발표대회
    • /
    • pp.423-425
    • /
    • 2016
  • 콘콜릭 테스팅(Concolic testing)은 프로그램 실행을 실제 구체적인 입력 값(Concrete Values)을 입력하며, 동시에 심볼릭 실행 (Syrnbolic execution)을 진행하는 테스팅 기법이다. 콘콜릭 테스팅은 모든 실행 가능 경로를 탐색하여, 테스트 케이스를 자동 생생한다. 그래서 높은 분기 커버리지를 나타내지만, 안전성을 목표로 하는 MC/DC 커버리지는 만족하지 못한다. 본 논문에서는 분기 커버리지와 MC/DC 커버리지를 만족하는 테스트 케이스를 자동생성하는 CREST 도구 개선을 제안한다.

C 프로그램을 테스팅하기 위한 분기 커버리지에 기반을 둔 자동 테스트 데이터 생성 (Automated Test Data Generation Based on Branch Coverage for Testing C Programs)

  • 정인상
    • 한국콘텐츠학회논문지
    • /
    • 제12권11호
    • /
    • pp.39-48
    • /
    • 2012
  • 소프트웨어 테스팅이 소프트웨어 개발 비용의 상당 부분을 차지하는 것은 잘 알려진 사실이다. 소프트웨어 테스팅 비용을 줄이기 위해 소프트웨어 테스트 데이터를 자동으로 생성하는 방법에 많은 연구가 이루어지고 있다. 일반적으로 테스트 데이터 자동 생성을 지원하기 위해 심볼릭 실행기나 제약 해결기와 같은 정교한 도구들을 요구한다. 그러나 이와 같은 도구들을 개발하거나 구입하는 것은 소프트웨어 테스트 관련 비용을 증가시키는 또 다른 요소로 작용된다. 이 논문에서는 심볼릭 실행이나 제약 해결에 의존되지 않는 동적 테스트 데이터 방법을 제안한다. 제안된 방식은 분기 커버리지 기준을 효과적으로 만족하도록 Korel의 경로 지향 테스트 데이터 생성 방법을 확장한다. 이 논문에서는 삼각형 분류 프로그램에 대한 실험을 통하여 제안된 방법이 분기 커버리지를 매우 효과적으로 달성함을 보인다.

목적 지향 콘콜릭 테스팅 (Goal-oriented Concolic Testing)

  • 정인상;박정규
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제37권10호
    • /
    • pp.768-772
    • /
    • 2010
  • 콘콜릭 테스트는 높은 테스트 커버리지를 달성하기 위해 실제 프로그램 수행과 심볼릭 수행을 결합하여 테스트 데이터를 생성한다. CREST는 콘콜릭 테스팅을 구현한 대표적인 open-source인 테스트 도구이다. 그러나 현재 CREST는 기본적으로 프로그램의 모든 가능한 실행 경로들을 탐색하는 것을 목적으로 한다. 이 때문에 특정 분기 또는 블록만을 테스트하는 경우에는 비효율적일 수 있다. 이 논문에서는 프로그램 상의 한 분기 또는 블록을 주고 이률 실행할 수 있는 테스트 데이터를 생성하는 목적 지향 콘콜릭 테스트 방법을 제안한다.

CRESTIVE-DX: 임베디드 소프트웨어에 대해 테스트케이스 생성을 지원하는 분산 Concolic 테스팅 도구 (CRESTIVE-DX: Design and Implementation of Distrusted Concolic Testing Tool for Embedded Software)

  • 임혜린;최한솔;김효림;홍신
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제9권8호
    • /
    • pp.229-234
    • /
    • 2020
  • 본 논문은 임베디드 소프트웨어에 대한 Concolic 테스팅을 효과적이고 효율적으로 지원하기 위해 임베디드 타겟(target) 시스템과 호스트(host) 시스템의 분산적이고 동시적으로 테스트 생성을 위한 작업을 수행하는 Concolic 테스팅 도구의 설계와 구현 사례를 소개한다. 소개하는 테스트 케이스 생성 도구는 Concolic 테스팅 과정 중 (1) 임베디드에 종속적인 특성을 갖는 테스트검증 대상 프로그램의 실행 부분은 임베디드 타겟 시스템에서 수행하고, (2) 시스템에 비종속적인 실행 부분인 탐색 전략, 제약식 해법기 실행 과정은 계산성능이 좋은 호스트 시스템에 분산하고, 독립적인 단계를 동시적으로 실행하도록 기존 Concolic 도구를 개선하였다. Arm Cortex A54 아키텍쳐의 임베디드 타겟 시스템과 x86-64 아키텍쳐의 호스트 시스템을 대상으로 본 기법을 구현하여 오픈소스 C 프로그램의 Grep, Busybox Awk, Busybox Ed를 대상으로 실험한 결과, 기존 도구 보다 1.59~2.64배 테스트케이스 생성속도가 향상됨을 확인할 수 있었다.

동적 분기 커버리지를 위한 테스트 데이터 자동 생성 (Automated Test Data Generation for Dynamic Branch Coverage)

  • 정인상
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제2권7호
    • /
    • pp.451-460
    • /
    • 2013
  • 높은 테스트 커버리지 달성을 위해 심볼릭 실행, 자료 흐름 분석 및 제약 해결 기법 등을 이용하여 테스트 데이터 생성을 하는 것이 일반적이다. 최근에 그와 같은 정교한 수단 없이도 높은 커버리지를 효과적으로 달성 할 수 있는 방법이 제안되었다. 그러나 이 방법도 실행 중에 다른 메모리 로케이션들이 바인딩되는 분기 조건을 갖는 프로그램에 대해서는 높은 커버리지를 가져오는 테스트 데이터 생성이 어려웠다. 특히 플래그 조건을 가지는 프로그램에 대해서는 특정 분기들이 실행되지 않아 높은 커버리지를 달성하지 못하는 경우가 발생한다. 이 논문에서는 이 문제를 다루기 위하여 기존 커버리지 기준을 개선한 동적 분기 커버리지 기준들과 동적 분기에 기반 한 테스트 데이터 생성 전략을 제안한다. 실험을 통하여 플래그 조건이 있는 프로그램들에 대해서도 제안된 방법이 기존의 방법에 비해 효과적으로 커버리지를 달성함을 보인다. 요약은 무슨 연구를 어떻게 수행하였는지, 주된 연구결과와 그 중요성에 관해 간결하게 기술하여야 한다.

RAM기반 자바카드 인스톨러를 이용한 로딩속도 개선 (An Improvement in Loading Speed Using RAM-based Java Card Installer)

  • 진민식;최원호;이동욱;김한나;정민수;박규석
    • 한국멀티미디어학회논문지
    • /
    • 제10권5호
    • /
    • pp.604-611
    • /
    • 2007
  • 자바카드는 스마트카드와 (U)SIM기술의 표준 기술로 받아들여지고 있으며, 그것은 하드웨어 독립성과 이를 통해 구현 가능한 어플리케이션의 사후발행기능으로 Native카드와 구별된다. 그러나 자바카드의 가장 큰 단점 중 하나는 하드웨어 자인의 제약과 자바 언어 자체에서 야기되는 늦은 실행 속도 문제이다. 본 논문에서는 카드 터미널 또는 SMS를 통한 어플리케이션 동적 다운로드시 속도를 개선하기 위해 논리주소를 물리주소로 바꾸는 Resolution작업에서 애플릿의 다운로드시 기존의 EEPROM 기반 심볼릭 참조를 EEPROM에 비해 약 100,000배 빠른 RAM에서의 직접참조가 가능한 자바카드 인스톨러를 설계 및 구현하였다. 실험을 통해 확인한 결과 제안된 Resolution_In_RAM기법이 적용된 자바카드 인스톨러를 통해 애플릿을 다운로드하면 EEPROM 기록 횟수가 37%, 다운로드 시간이 30% 이상 감소됨을 알 수 있었다.

  • PDF