서지주요정보
Points-to analysis for javascript = 자바스크립트를 위한 포인터 분석
서명 / 저자 Points-to analysis for javascript = 자바스크립트를 위한 포인터 분석 / Dong-Seok Jang.
저자명 Jang, Dong-Seok ; 장동석
발행사항 [대전 : 한국과학기술원, 2009].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8020137

소장위치/청구기호

학술문화관(문화관) 보존서고

MCS 09022

SMS전송

도서상태

이용가능

대출가능

반납예정일

초록정보

The complexity of JavaScript programs has increased over the last year. JavaScript is a scripting language designed for client-side web scripting. Even though JavaScript was originally designed for simple purposes such as validating forms or controlling user interfaces in web pages, JavaScript now provides full-featured application development environments with various libraries. Moreover, JavaScript programs of several hundred kilobytes are used on many popular web sites. Therefore, it is evident that program analysis for JavaScript is needed to deal with the increasing complexity in JavaScript programs. (Static) program analysis is the technique which predicts the behavior of a computer program without actually executing the program. By using the technique, we can gather useful information to develop programs easily, or verify that a program does not cause a runtime error. For JavaScript, although there are several researches on program analysis for security problems and type system, there is no serious program analysis for optimizing compilers and software engineering tools. However, the latter is also important. Points-to analysis for JavaScript is a basis for further program analysis for JavaScript, but has not yet been developed. The goal of points-to analysis for JavaScript is to determine the set of objects pointed to by a reference variable or a reference object field. It has a wide range of applications in code optimization and software engineering tools. This paper presents a points-to analysis for JavaScript which precisely handles the dynamic features of JavaScript such as the runtime modification of objects and classes through addition of fields or updating of methods, which make the analysis difficult and inaccurate. We evaluate the analysis on a set of JavaScript programs. We also apply the analysis to a code optimization technique to show that the analysis can be useful.

본 논문에서는 코드 최적화 및 소프트웨어 공학 도구 제작에 응용될 수 있는 자바스크립트를 위한 포인터 분석을 제안, 구현, 실험하였다. 자바스크립트를 위한 포인터 분석의 핵심은 자바스크립트의 동적인 요소들을 처리하는 데에 있다. 대표적인 자바스크립트의 동적인 요소로 자바스크립트의 동적인 객체 프로퍼티를 들 수 있다. 자바스크립트의 객체의 프로퍼티는 실행중에 생성되거나 삭제될 수 있는데, 이것은 프로그램 코드를 통해 실행 이전에 객체의 프로퍼티의 명세가 정해지는 기존의 객체 지향 언어와는 무척 다른 특징이다. 추상적인 의미에서 자바스크립트 객체의 프로퍼티들은 문자열, 즉 프로퍼티의 이름으로 인덱싱되는 배열의 원소와도 같다. 기존의 C를 위한 포인터 분석 방식에서는 특정 배열의 원소들을 뭉뚱그려 하나의 원소로 추상화해 처리하는 경우가 많은데, 이를 자바스크립트에 적용할 경우 각각의 객체 프로퍼티를 구별할 수 없게 됨으로써 부정확한 포인터 분석 결과를 내놓게 된다. 본 논문에서는 이를 해결하기 위해 자바스크립트 객체의 프로퍼티를 접근하는 데 사용되는·연산자와 [] 연산자를 구분하여 각각의 연산자의 특성을 활용하는 포인터 분석 방법을 고안하였다. 그리고 제안한 자바스크립트 분석 방법을 실제로 구현하였고 이를 사용해 Sunspider 자바스크립트 벤치마크와 실제 웹사이트의 포인터 정보를 분석해 보았다. 실험 결과는 적절한 만한 수준의 분석 시간을 보였으며, 분석 결과 또한 비교적 정확하였다. 실험 결과는 적절한 만한 수준의 분석 시간을 보였으며, 분석 결과 또한 비교적 정확하였다. 또한 자바스크립트 포인터 분석의 실례를 들기 위하여, 동적인 . 연산자의 수를 줄이는 코드 최적화 기법을 Sunspider벤치마크에 적용해 보았으며, 약간의 성능 향상을 확인하였다. 앞으로 연구의 방향은 실제 대형 웹 사이트에서 사용되고 있는 자바스크립트 프로그램을 분석할 수 있는 환경을 마련하여 포인터 분석 결과를 알아보는 것이다. 이를 위해서는 다양한 자바스크립트 라이브러리에 대한 처리가 필수적으로 필요하며, 분석 결과의 정확성을 유지하며 정적인 방법으로 분석될 수 없는 자바스크립트의 특징들을 처리하는 방법이 또한 필요하다. 이를 위해서는 많은 구현 노력과 포인터 분석 외의 프로그램 분석, 예를 들어 문자열 분석과 같은 방법들이 동원되어야 한다고 예상해 본다.

서지기타정보

서지기타정보
청구기호 {MCS 09022
형태사항 v, 30 p. : 삽도 ; 26 cm
언어 영어
일반주기 저자명의 한글표기 : 장동석
지도교수의 영문표기 : Kwang-Moo Choe
지도교수의 한글표기 : 최광무
학위논문 학위논문(석사) - 한국과학기술원 : 전산학전공,
서지주기 References : p. 29-30
주제 JavaScript ;points-to analysis;pointer analysis;program analysis;scripting language
자바스크립트;포인터 분석;프로그램 분석;스크립트 언어;스크립팅 언어
QR CODE qr code