서지주요정보
Exception analysis for languages with exceptions = 프로그램 실행 중 처리되지 않는 예외상황을 예측하는 방법
서명 / 저자 Exception analysis for languages with exceptions = 프로그램 실행 중 처리되지 않는 예외상황을 예측하는 방법 / Suk-Young Ryu.
발행사항 [대전 : 한국과학기술원, 2001].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8012609

소장위치/청구기호

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

DCS 01019

휴대폰 전송

도서상태

이용가능(대출불가)

사유안내

반납예정일

등록번호

9007699

소장위치/청구기호

서울 학위논문 서가

DCS 01019 c. 2

휴대폰 전송

도서상태

이용가능(대출불가)

사유안내

반납예정일

리뷰정보

초록정보

Exception handling facilities are useful but dangerous. Many modern programming languages such as C++, Java, Ada, Modula-3, and ML provide the programmer with exception mechanisms. However, the exception facilities can provide a hole for program safety. Even for type-safe programming languages like ML, exceptions provide a hole for program safety. ML programs can abruptly halt when an exception is raised and never handled. This is the only one "safety hole" in well-typed ML programs. Multithreaded exception handling is not well supported. Even though many languages offer both exception handling and multithreading mechanisms, they do not provide a good method to use these two features together. Although Java provides a simple and tightly integrated language support for multithreaded programs, throwing exceptions across threads is deprecated because of the safety problem. In this thesis, we present two static analyses that detect potential runtime exceptions that are raised and never handled. We first design such an analysis for single-threaded ML programs and then for multithtreaded Java programs. We found that even though the exception flow and control flow are in general intertwined in ML programs, the two analyses could be safely and cost-effectively decoupled. For cases where exceptions carry functions(i.e., where control flow analysis needs exception analysis) our control flow analysis uses a crude approximation to assure its safety against the decoupling. In Java, throwing exceptions across threads is deprecated because of the safety problem. Instead of restricting programmers` freedom, we extend the Java language to support multithreaded exception handling and propose a tool to detect uncaught exceptions. Our analysis firstly estimates concurrently evaluated expressions among threads, and then predicts uncaught exceptions by using the pre-analyzed concurrency information. Our method can be applied to other languages with exception handling facilities. One contribution of this thesis is an analysis in divide and conquer style. By dividing one complex analysis to several simpler analyses, the analysis result is achieved systematically. Another merit of our method is designing a sparse constraint system and proving its consistency with smaller-grained constraint systems. When the interesting properties are sparse in programs, it is reasonable to analyze the properties at a larger granularity than at every expression.

예외상황 관리 방법 (exception handling)은 매우 유용하게 사용되고 있지만 또한 위험하기도 하다. C++, Java, Ada, Modula-3, ML과 같은 많은 언어들이 예외상황 관리 방법을 제공하여, 프로그래머가 자유롭게 예외상황을 정의하고 발생시키고 처리할 수 있도록 하고 있다. 하지만, 프로그래머가 주의를 가지고 사용하지 않으면 오히려 프로그램의 안전도를 해치는 상황으로 발전할 수 있다. 프로그램 내에서 예외 상황이 발생하면 그 예외 상황을 처리할 수 있는 곳까지 프로그램의 구조를 빠져나오게 되는데, 만일 발생된 예외 상황을 처리하는 곳이 없으면 프로그램이 갑작스럽게 그 실행을 중단해버리기 때문이다. 많은 프로그래밍 언어가 예외상황과 다중 스레드를 모두 제공하고 있긴 하지만, 이 두 가지를 같이 사용하는 경우에 대해서는 잘 다루지 못하고 있다. Java는 언어 자체가 간단하고 강력한 다중 스레드 사용 방법을 제공하고 있지만, 다중 스레드 사이에서 예외상황을 발생시키는 것은 안전성 문제로 제한하고 있다. 본 연구에서는 프로그램의 실행 중 처리되지 않는 예외상황을 프로그램 실행 전에 미리 예측하는 분석 방법을 제안한다. 먼저 다중 스레드를 고려하지 않은 ML 프로그램에 대한 예외상황 분석 방법을 고안한 후, 다중 스레드 Java 프로그램에 대한 예외상황 분석 방법을 제안한다. ML 프로그래머가 표현할 수 있는 예외 상황은 매우 광범위하지만, 일반적으로 사용되는 예외상황의 내용은 대부분이 간단한 경우들임을 알 수 있었다. 따라서 본 연구에서는 타입 정보를 이용하여 프로그램의 함수 흐름도를 간단하게 예측한 후, 그 정보를 이용하여 예외상황의 흐름을 분석하는 방법을 개발한다. 또한 Java 언어를 확장하여 프로그래머가 자유롭게 다중 스레드 사이에 예외상황을 발생시킬 수 있도록 한 후에 그 프로그램에서 처리되지 않는 예외상황을 분석하는 도구를 제안한다. 이 분석 방법은 다중 스레드 Java 프로그램의 각 스레드에서 동시에 수행될 수 있는 부분들을 미리 예측해내고, 이 분석 정보를 이용하여 다중 스레드 사이에서 예외상황을 발생시킬 때 처리되지 않는 예외상황을 예측하는 것이다. 본 연구의 다음과 같은 장점들은 예외상황을 제공하는 다른 언어에도 사용될 수 있을 것이다. 첫째는 복잡한 하나의 분석 문제를 간단한 여러 개의 분석으로 나누어서 체계적으로 해결하는 것이다. 두번째는 분석하고자 하는 성질이 프로그램에 흩어져 있을 때 제약식을 적게 만드는 것이다. 제약식이 적으면 분석하는 데 필요한 시간이 줄어들게 되고, 이 시스템의 안전성은 더 자세한 시스템의 안전성으로부터 쉽게 이끌어낼 수 있게 된다.

서지기타정보

서지기타정보
청구기호 {DCS 01019
형태사항 viii, 159 p. : 삽화 ; 26 cm
언어 영어
일반주기 Appendix : A, SML/NJ Exception Analyzer Version 0.98. - B, Analysis Example: Knuth-Bendix Program
저자명의 한글표기 : 류석영
지도교수의 영문표기 : Kwang-Keun Yi
지도교수의 한글표기 : 이광근
수록잡지명 : "A cost-effective estimation of uncaught exceptions in SML programs". Theoretical computer science, v.273 no.1, (2001)
학위논문 학위논문(박사) - 한국과학기술원 : 전산학전공,
서지주기 Reference : p. 150-159
QR CODE

책소개

전체보기

목차

전체보기

이 주제의 인기대출도서