1. 문제 (Problem)
Context tunneling [Jeon, Jeong, Oh, OOPSLA 2018]은 k-limited context-sensitive points-to analysis의 정밀도와 확장성을 동시에 향상시키는 강력한 기법이다. 핵심 아이디어 자체는 단순하고 우아하다: 모든 호출 지점에서 무조건 context를 갱신하는 대신, 중요한 context element만을 선택적으로 유지한다.
그러나 이 아이디어를 실현하는 방법은 단순하지도, 원칙적이지도, 구현이 쉽지도 않다.
현재 접근법의 복잡성
- Atomic feature 설계 (Table 1): 23개의 수작업 설계된 feature
- Boolean formula 모델 (§4.2): DNF로 표현된 두 개의 boolean formula
Π = ⟨f1, f2⟩ - Non-greedy 학습 알고리즘 (Algorithm 1-3): 정교한 탐색 전략
- Training infrastructure: 학습에 53~137시간 소요
- 분석 프레임워크 의존성: Doop 위에서 구현
이 복잡성은 context tunneling의 채택 장벽(adoption barrier) 을 형성한다.
연구 공백
Context tunneling의 아이디어 는 보편적이고 강력하지만, 현재의 실현 방법 은 language-specific, framework-specific, feature-engineering-heavy하다. 다음과 같은 접근법은 아직 탐구되지 않았다:
- 프로그램의 구조적 성질로부터 직접 유도되는 tunneling 규칙
- 언어·분석 flavor에 독립적인 범용 tunneling 기준
- 수 줄의 코드로 구현 가능한 단순한 규칙
- 이론적 근거가 명확한 tunneling 기준
2. 목표 (Goal)
Context tunneling의 효과를 달성하면서, 단순하고(simple), 원칙적이며(principled), 구현이 쉬운(easy-to-implement) tunneling 기법을 개발한다.
- 단순성(Simple): 1~3개의 명확한 조건으로 표현, 한 문장으로 기술 가능
- 원칙성(Principled): 이론적 성질로부터 직접 유도, formal justification 존재
- 구현 용이성(Easy-to-implement): 수십 줄 이내의 코드 수정으로 통합 가능. 별도의 학습 단계 불필요
- 범용성(General): 임의의 언어·flavor·
k에 적용 가능 - 효과성 유지: 원 논문의 data-driven heuristic에 근접하거나, 최소한 baseline을 유의미하게 outperform