• 제목/요약/키워드: 자바 파서

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

기존 자바 파서 확장 기반의 코드 정적 분석기 구현 (Implementing A Code Static Anaylsis based on the Java Parser)

  • 박지훈;박보경;이근상;김영철
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 춘계학술발표대회
    • /
    • pp.641-644
    • /
    • 2017
  • 현재 많은 테스팅 기법으로도 생산되는 결과물들의 잠재적 오류 발생을 예측하기 힘들다. 기존 오픈 소스 정적 분석 도구들(Source Navigator)은 불충분한 정보를 제공하여 원하는 내부 정보를 축출하기 어렵다. 이를 해결하기 위해, 기존 오픈 소스의 자바 파서의 개선을 통해, 코드 내부 품질 측정을 고려하고자 한다. 즉 기존 자바 파서 개선 기반의 "추상구문트리로 변환된 코드"에서 "직접 코드 정보 추출" 방안의 구현이다. 이를 통해, 기존의 SNDB보다 더 많은 코드 정보 추출로 코드 내부 품질 측정이 더 수월할 것을 기대한다.

재목적 Oolong-to-SIL 중간 언어 번역기 (Retargetable Oolong-to-SIL IL Translator)

  • 권혁주;김영근;이양선
    • 한국멀티미디어학회:학술대회논문집
    • /
    • 한국멀티미디어학회 2004년도 춘계학술발표대회논문집
    • /
    • pp.310-313
    • /
    • 2004
  • 자바는 컴파일러에 의해 아키텍처 독립적인 바이트코드로 구성된 바이너리 형태의 클래스 파일을 생성하면 JVM에 의해 하드웨어와 운영체제에 상관없이 실행이 가능한 플랫폼 독립적인 언어로 현재 가장 널리 사용되는 범용 프로그램 언어중 하나이다. EVM(Embedded Virtual Machine)은 Microsoft사의 .NET 언어와 SUN사의 Java 언어등을 모두 수용할 수 있는 임베디드 시스템을 위한 가상기계이며, SIL(Standard Intermediate Language)은 EVM에서 실행되는 중간언어로 다양한 프로그래밍 언어를 수용하기 위해서 객체지향 언어와 순차적 언어를 모두 수용하기 위한 연산 코드 집합을 갖고 있다. 본 논문에서는 자바 프로그램을 EVM에서 실행 될 수 있도록 자바 프로그램을 컴파일하여 생성된 클래스 파일로부터 Oolong 코트를 추출하고 추출된 Oolong 코드를 EVM의 SIL 코드로 변환하는 Oolong-to-SIL 번역기 시스템을 구현하였다. 번역기 시스템을 정형화하기 위해 Oolong 코드의 명령어 등을 문법으로 작성하였으며, PGS를 통해 생성된 어휘 정보를 가지고 스캐너를 구성하였고, 파싱테이블을 가지고 파서를 설계하였다 파서의 출력으로 AST가 생성되면 번역기는 AST를 탐색하면서 의미적으로 동등한 SIL 코드를 생성하도록 번역기 시스템을 컴파일러 기법을 이용하여 모듈별로 구성하였다. 이와 같이 번역기를 구성함으로써 목적기계의 중간언어 형태에 따라 중간언어 번역기를 자동으로 구성할 수 있어 재목적성(Retargetability)을 높일 수 있다.

  • PDF

자바 바이트코드의 .NET MSIL 중간언어 번역기 (Java Bytecode-to-.NET MSIL IL Translator)

  • 정지훈;박진기;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2003년도 추계학술발표논문집 (중)
    • /
    • pp.663-666
    • /
    • 2003
  • 자바는 썬 마이크로시스템즈사의 제임스 고슬링(James Gosling)에 의해 고안된 언어로 운영체제 및 하드웨어 플랫폼에 독립적인 차세대 언어로 최근에 가장 널리 사용하는 범용 프로그래밍 언어 중 하나이다. 자바 프로그램은 컴파일러에 의해 각 플랫폼에 독립적인 중간 코드 형태의 바이트코드로 변환된 클래스 파일로 생성되면 JVM(Java Virtual Machine)에 의해 실행된다. 마이크로소프트사의 .NET 플랫폼과 C# 언어는 프로그래머들의 요구를 충족시키고 썬사의 JVM 환경과 자바 언어에 대응하기 위해서 개발된 플랫폼과 언어이다. C#과 같은 .NET 언어는 컴파일러에 의해 MSIL(MicroSoft Intermediate Language) 코드로 번역되며 번역된 MSIL 코드는 .NET 플랫폼 환경에서 런타임 엔진인 CLR(Common Language Runtime)에 의해 실행이 된다. 자바로 작성된 프로그램은 JVM 플랫폼에서는 실행이 되지만 .NET 플랫폼에서 실행이 되지 않고, 반대로 C#과 같은 .NET 언어로 작성된 프로그램은 .NET 플랫폼에서는 실행이 되지만 JVM 플랫폼에서 실행이 되지 않는다. 이런 이유로 본 논문에서는 자바소스를 컴파일하여 생성된 클래스 파일에서 Oolong 코드를 생성하고 생성된 Oolong 코드를 .NET의 MSIL 코드로 변환하여 자바로 구현된 프로그램이 .NET 환경에서 실행되도록 하는 Bytecode-to-MSIL 번역기 시스템을 구현하였다. 따라서, 자바 프로그래머는 JVM이나 .NET 플랫폼 환경에 관계없이 프로그램을 작성하여 실행시킬 수 있다. 번역기 시스템의 구현을 정형화하기 위해 Oolong 코드의 명령어들을 문법으로 작성하였으며, PGS를 통해 생성된 어휘 정보를 가지고 스캐너를 구성하였으며, 파싱테이블을 가지고 파서를 설계하였다. 파서의 출력으로 AST가 생성되면 번역기는 AST를 탐색하면서 의미적으로 동등한 MSIL 코드를 생성하도록 시스템을 컴파일러 기법을 이용하여 모듈별로 구성하였다.

  • PDF

Java 코드 분석기법을 이용한 UML 클래스 다이어그램 생성 방법 (Building a UML class diagram using Java code analysis techniques)

  • 한무희;김경수;김현수
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 봄 학술발표논문집 Vol.30 No.1 (B)
    • /
    • pp.133-135
    • /
    • 2003
  • 본 연구에서는 자바 코드로부터 UML 클래스 다이어그램을 추출하는 역공학방법을 제시하였다. 파서를 이용하여 자바 코드로부터 AST를 생성하고 이를 순회하면서 클래스다이어그램 생성에 필요한 정보를 추출하였다. 이를 위해 구조정보와 관계정보를 정의하였는데, 구조정보에서는 클래스 몸체를 구성하는 정보를 표현하였다. 관계정보에서는 클래스들 간의 연관관계를 결정하기 위해 필요한 정보를 표현하였으며, 얻어진 관계정보를 통해 연관관계를 유추하는 방법을 제시하였다. 특히 클래스들간의 연관관계를 추출하기 위한 규칙들을 정의하고, 이를 통해 얻어진 관계정보를 이용하여 연관관계를 유출하는 과정을 설명하였다.

  • PDF

Java ORB 시스템을 위한 IDL-to-Java 컴파일러 개발 (An IDL-to-Java Compiler for Java ORB System)

  • 이진호;이근영;정태명
    • 한국정보처리학회논문지
    • /
    • 제5권8호
    • /
    • pp.2154-2163
    • /
    • 1998
  • 복잡한 분산 시스템 상에서 운용되는 소프트웨어들을 위해서 안정된 하부구조인 동시에 소프트웨어 아키텍쳐인 OMG의 CORBA는 효율적인 객체 지향 개발 환경을 제공한다. 인터넷, 개인용 컴퓨터, WWW의 사용 증가로 인해 이기종의 분산 시스템들 상에서 구동될 수 있는 응용프로그램들이 요구되고 있으며 이와 같은 이기종간의 이식성을 충족시키기 위해서 Java ORB에 대한 필요성이 증가되고 있는 추세이다. 본 논문에서는 IDL을 자바로 사상하는 규약을 분석하며 자바로 구현된 CORBA 시스템을 지원하기 위한 IDL-to-Java 컴파일러를 구현하였다. 구현된 컴파일러는 어휘 분석기, 파서, 목적 코드 생성기로 나누어지며 목적 코드 생성기에서는 IDL에서 자바로 사상된 파일들 이외에 투명성을 제공하게 되는 클라이언트 스텁 코드와 객체 구현 스켈레톤 코드를 생성한다.

  • PDF

음성 웹서비스를 위한 VoiceXML 해석기의 설계 및 구현 (Design and Implementation of the VoiceXML Interpreter for Voice Web-service)

  • 신현경;강동남;염세훈;유재우
    • 한국음향학회지
    • /
    • 제20권4호
    • /
    • pp.42-47
    • /
    • 2001
  • 본 연구의 목적은 비 시각환경에서 웹 서비스를 위한 언어인 VoiceXML을 기존의 자동응답 시스템에 적용하기위해 VoiceXML문서의 마크-업을 인식하고, 문서가 문서 형정의 (DTD)에 적합한지를 검사하여 적합성이 확인되면 추상구문트리를 생성하는 DI 파서 (Document Instance Parser)와 생성된 추상구문트리를 이용하여, Voice-XML문서를 번역해주는 해석기를 제안하고자 한다. VoiceXML해석기는 DI 파서와 실행기로 구성되어 있으며, DI 파서는 Recursive descent 파싱 기법을, 실행기는 VXML 포럼에서 제안한 FIA (Form Interpretation Algorithm)를 사용하였다. 본 시스템은 VoiceXML 언어를 효율적으로 실행할 수 있는 환경 제공 및 시스템 개발의 편의성과 효율성을 위해 모듈화 설계가 가능한 자바언어를 사용함으로써 이 기종간의 이식성이 뛰어난 특징이 있다.

  • PDF

분산 시스템 구성관리를 위 한 XML 매핑 프레임워크의 설계 및 구현 (Design and Implementation Of XML Mapping Framework For Configuration Management in Distributed Systems)

  • 윤태웅;민덕기
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 가을 학술발표논문집 Vol.30 No.2 (1)
    • /
    • pp.481-483
    • /
    • 2003
  • 분산 시스템 구성관리를 위해서는 여러 가지 구성환경정보를 로컬 파일 시스템에 저장하거나 네트워크를 통해서 다른 노드에 전달하는 방법이 필요하다. 본 논문에서는 구성관리를 위한 자바 객체와 XML을 사용한 분산시스템의 구성관리를 위한 영속성, 구조화. 재사용성을 가진 구성관리 프레임워크를 제시한다. 기존 연구에서는 문자열 타입만 제공하거나 자바 언어의 모든 타입을 빈즈 규약에 따라서 접근하였으나 본 연구에서는 재사용성과 성능향상을 위해서 구성관리에서 사용되는 일반타입, 리스트타입, 중첩타입으로 이루어진 구성정보 모델을 사용하였다. 또한 JDK버젼과 XML파서 방식에 따른 성능 분석 결과를 제시한다. 또한 분산 시스템에서 이벤트 기반의 메시징 시스템의 이벤트를 전달하는 표준적인 API로 사용될 수 있다.

  • PDF

컴퓨터의 개념 교육을 위한 가상 머신의 설계 및 구현 (Design and Implementation of Virtual Machines as an Aid in Teaching Computer Concepts)

  • 나정호;조강원;강수연;정우근;이재진
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(A)
    • /
    • pp.131-133
    • /
    • 2012
  • 본 연구에서는 컴퓨터의 개념을 학부 신입생 교육과정에서 쉽게 이해할 수 있도록 ARM 명령어 집합의 부분 집합을 정의하고, 어셈블리 언어 코드를 입력받아 실행하는 가상 머신을 설계하고 구현하였다. 기존 교육 과정의 컴퓨터 구조 과목에서 다루는 어셈블리 언어는 실제의 머신을 기반으로 하기 때문에 개념을 학습하는데 있어서 불필요하게 복잡하다는 단점이 있다. 하지만 본 연구에서는 교육에 필요한 내용만을 포함한 가상 머신을 새롭게 정의함으로써 좀 더 우아한 방법으로 컴퓨터의 개념을 이해할 수 있도록 하였다. 특히 어셈블리 언어 학습을 통해서 컴퓨터 구조와 고급 언어 간의 상호작용을 이해하는데 도움이 될 수 있다. 제안한 가상 머신은 자바로 구현하였으며, 스캐너 및 파서를 구현하기 위해서 오픈소스 컴파일러-컴파일러 시스템을 사용하였다. 해당 가상 머신은 공과대학 학부 신입생을 위한 실습 프로그램으로 사용되었으며 컴퓨터 개념의 이해를 돕는데 유의미한 기여를 하였다.

배드 스멜 코드 추출을 위한 코드 가시화 프로세스 구축 (Building a Code Visualization Process to Extract Bad Smell Codes)

  • 박지훈;박보경;김기두;김영철
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제8권12호
    • /
    • pp.465-472
    • /
    • 2019
  • 오늘날 많은 영역에서 소프트웨어의 사용 범위가 넓어짐에 따라 좋은 소프트웨어 (Good Software)의 개발은 매우 중요하다. 하지만 현실은 소프트웨어 개발의 모든 단계에서 요구사항의 변경이 자주 발생한다. 또한 빈번한 변경으로 인해 설계 복잡성이 증가하여 원래의 설계 목표보다 소프트웨어 품질이 저하될 수 있다. 이러한 문제 해결을 위해, 배드 스멜(Bad Smell) 코드 추출을 위한 코드 가시화 프로세스를 제안한다. 이 방법은 마틴 파울러의 배드 스멜을 기반으로 소스 코드를 식별하여 리팩토링 영역을 가시화 한다. 잦은 요구사항의 변경에도 리팩토링을 통한 소프트웨어의 설계 개선을 기대한다.